Double.MIN_NORMAL
(Java1.6中介绍的)和Double.MIN_VALUE
有什么区别?
发布于 2010-09-16 15:46:48
答案可以在浮点表示的IEEE规范中找到
对于单个格式,法线数和次法线数之间的区别是法向数的有义位和(二进制点左边的位)的前导位为1,而法数的前导位和次法线数的前导位为0。在IEEE标准754中,单格式次正规数被称为单格式非正态数.
换句话说,Double.MIN_NORMAL
是您可以表示的最小的数字,前提是在二进制点前面有一个1(在十进制系统中称为小数点)。虽然Double.MIN_VALUE
基本上是您可以表示的不受此约束的最小数。
发布于 2014-04-06 11:23:15
为了简单起见,解释只考虑正数。
两个相邻的归一化浮点数 'x1‘和'x2’之间的最大间距是2 * epsilon * x1
(归一化浮点数间隔不均匀,它们是对数间隔)。这意味着,当实数(即“数学”数字)四舍五入为浮点数时,最大相对误差是epsilon
,这是一个称为机器epsilon或单位舍入的常数,对于双精度,它的值为2^-52 (近似值为2.22e-16)。
小于Double.MIN_NORMAL
的浮点数称为子法线,它们均匀地填补了0和Double.MIN_NORMAL
之间的空白。这意味着,涉及次法线的计算可能导致不太准确的结果。当计算结果较小时,使用异常值可以使计算的精度下降得更慢。
https://stackoverflow.com/questions/3728309
复制相似问题