添加大数字会返回奇怪的大数字

时间:2015-07-27 14:11:06

标签: fortran fortran90 addition largenumber

我正在尝试在Fortran中进行一些计算:

large number (order E40) - large number (order E40)

我应该回归零。它大部分时间都有效,但在一些情况下,我会得到奇怪的数字。 Fortran给我的一个答案是-1E20。我得到的另一个奇怪的答案是32768,这是2^15,奇怪的是。

有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

没有实际代码很难分辨,但是......

只有在数字足够相似时才会出现这种情况。虽然与1e201相比,2相当大,但与1e40相比,它相当小。

事实上,即使是双精度,你也只有15-17 digits of precision。考虑到这一点,您获得的值低于1e40范围内的数字可能的准确度。

你看到的是数字噪音。

[另一种可能性当然是你试图以单精度来做这件事。这是不可能的(最大指数~38),任何事情都可能发生。 ]