当我将一个小的double添加到1时,结果为1:
tmpResult[q] = 7.8879654121609884E-88
tmpResult[q] = tmpResult[q] + 1.0;
tmpResult [q] = 1
我知道double只有18个精度,但我使用的是Math.Net.Numerical 它只能用于double(int optional)。
有什么问题?
答案 0 :(得分:2)
没有问题。
1.0
的IEEE754双精度表示是
0x3FF0000000000000
下一个最大的double
是
0x3FF0000000000001
其小数值为
1.0000000000000002220446049250
您要表示的数字是
1.0000000000000000000000000000000000000000000000000000000000 00000000000000000000 00000000007887965 ...
此值的最接近的双精度数精确为1.0
,因此这是从操作中正确返回的值。