使用 Math.Net.Numerical 将 1 加到小双 returns 1
Adding 1 to a small double returns 1 using Math.Net.Numerical
当我将一个小双精度数加到 1 时,结果是 1:
tmpResult[q] = 7.8879654121609884E-88
tmpResult[q] = tmpResult[q] + 1.0;
tmpResult[q] = 1
我知道 double 只有 18 位精度,但我使用的是 Math.Net.Numerical。
它只能与 double (int optional) 一起使用。
有什么问题?
没有问题。
1.0
的IEEE754双精度表示是
0x3FF0000000000000
下一个最大的 double
是
0x3FF0000000000001
它的十进制值为
1.0000000000000002220446049250
您要代表的号码是
1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007887965....
最接近此值的双精度数恰好是 1.0
,因此这是从操作中正确 returns 的值。
当我将一个小双精度数加到 1 时,结果是 1:
tmpResult[q] = 7.8879654121609884E-88
tmpResult[q] = tmpResult[q] + 1.0;
tmpResult[q] = 1
我知道 double 只有 18 位精度,但我使用的是 Math.Net.Numerical。
它只能与 double (int optional) 一起使用。
有什么问题?
没有问题。
1.0
的IEEE754双精度表示是
0x3FF0000000000000
下一个最大的 double
是
0x3FF0000000000001
它的十进制值为
1.0000000000000002220446049250
您要代表的号码是
1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007887965....
最接近此值的双精度数恰好是 1.0
,因此这是从操作中正确 returns 的值。