当我将一个小的双倍加到1时,结果是1:
tmpResult[q] = 7.8879654121609884E-88
tmpResult[q] = tmpResult[q] + 1.0;tmpResultq = 1
我知道双倍只有18精度,但我使用的是Math.Net.Numerical。
而且它只能使用double (int可选)。
有什么问题吗?
发布于 2017-01-04 00:24:45
没有问题。
IEEE754的1.0的双重精度表示是
0x3F000000000
下一个最大的double是
0x3F00000000001
,它的十进制值为
1.0000000000000002220446049250
您要表示的数字是
1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007887965....
与此值最接近的双精度数字是1.0,因此它是从操作中正确返回的值。
https://stackoverflow.com/questions/41454199
复制相似问题