什么是低于正常的浮点数?

isnormal()参考页面告诉:

确定给定的浮点数arg是否正常,即不是零,低于正常,无限,也不是NaN。

一个数字为零,无限或NaN清楚它的含义。 但它也说低于正常水平。 数字何时不正常?


在IEEE754标准中,浮点数用二进制科学记数法表示,x = M×2e。 这里M是尾数,e是指数。 在数学上,你可以选择指数使得1≤M<2。*但是,由于在计算机表示中指数只能有一个有限的范围,所以有一些数值大于零,但小于1.0×2emin。 这些数字是次正常的或非正常的。

实际上,尾数存储时没有前导1,因为总是有前导1,除了低于正常数(和零)。 因此,解释是,如果指数非最小,则存在隐式前导1,并且如果指数最小,则不存在,并且该数目是低于正常的。

*)更一般地,对于任何B基科学记数法,1≤M<B。


从http://blogs.oracle.com/d/entry/subnormal_numbers:

可能有多种表示相同数字的方式,以小数为例,数字0.1可以表示为1 * 10-1或0.1 * 100甚至0.01 * 10。标准规定数字总是与作为一个第一位。 以十进制表示,与1 * 10-1示例相对应。

现在假设可以表示的最低指数是-100。 所以可以以正常形式表示的最小数字是1 * 10-100。 但是,如果我们放宽领先位是一个的约束条件,那么我们实际上可以在相同的空间中代表较小的数字。 以小数为例,我们可以表示0.1 * 10-100。 这被称为次正常数。 具有低于正常数字的目的是平滑最小正常数字与零之间的差距。

认识到低于正常数的精确度低于正常数是非常重要的。 事实上,它们的尺寸越小,精度越低。 因此,使用低于正常数字的计算不会具有与正常数字上的计算相同的精度。 因此,对低于正常数进行重要计算的应用程序可能值得研究,以查看重新缩放(即将数乘以某个缩放因子)是否会产生更少的子正常值以及更准确的结果。

链接地址: http://www.djcxy.com/p/90979.html

上一篇: What is a subnormal floating point number?

下一篇: D3js format.parse() returns null rahter than Date