从数字转换双精度浮点数到单精度浮点数的精度损失结果。 什么是用来实现这种转换的算法?
是数字大于3.4028234e+38
或大于较小-3.4028234e+38
简单地还原成相应的限制? 我觉得这个转换过程比这更复杂一些,但它我找不到文档。
从数字转换双精度浮点数到单精度浮点数的精度损失结果。 什么是用来实现这种转换的算法?
是数字大于3.4028234e+38
或大于较小-3.4028234e+38
简单地还原成相应的限制? 我觉得这个转换过程比这更复杂一些,但它我找不到文档。
最常见的浮点格式在IEEE 754标准中指定的二进制浮点格式。 我会回答你的这些格式问题。 还有十进制浮点格式标准的新(2008)版本,并有其他格式比IEEE 754标准,但754种的二进制格式是目前最常见的。 有关舍入,并链接到该标准的一些信息,在这个维基百科页面 。
转换双精度到单精度被视为相同的舍入任何操作的结果。 (例如,加法,乘法,或平方根具有精确的数学值,并且该值是根据以从操作返回的结果的规则圆形的。对于转换的目的,输入值是精确的数学值,和它是圆的。)
一般情况下,计算环境有一些默认的舍入模式。 (各种编程语言可以提供的方法来改变默认的舍入模式或与每个操作特别指定。)默认舍入模式是通常舍入到最接近的。 其它的是圆朝向零,圆向着正无穷(向上),以及圆朝向负无穷(向下)。
在舍入到最接近的模式,则返回最接近的确切值的表示数。 如果出现平局,则与甚至低比特的数目(在其级分或有效数)被返回。 为了这个目的,无穷大有效地发挥作用,好像它是在有限数量的图案的下一个值。 在单精度,最大的有限数字是0x1.fffff8p127,0x1.fffffap127,0x1.fffffcp127和0x1.fffffep127。 (有在单精度有效数24位,所以在该位的工序是2在这最后的十六进制数字的工序。)对于四舍五入的目的,无穷大的行为就好像它是在0x2p128。 因此,如果精确的结果是更靠近0x1.fffffep127(因此,小于0x1.ffffffp127),则舍入到0x1.fffffep127。 如果是大于或等于0x1.ffffffp127,它被四舍五入到无穷远。 对负无穷大的情况是对称的。
在圆朝向无穷模式下,最接近的可表示值,该值大于或等于被返回的确切值。 因此,上述0x1.fffffep127发到无穷的任何值。 圆朝向负无穷返回最接近的可表示值,该值小于或等于确切vaue。 圆朝向零返回到零的方向最接近的可表示值。
IEEE 754标准仅指定结果; 它没有指定的算法。 用于实现该舍入方法是由每个实施。