Fortran精确处理大型实数

时间:2017-03-06 06:13:25

标签: fortran precision

当我运行下面的代码时,我得到输出6378136 .5 而不是6378136 .3

PROGRAM test

implicit none
real*8 radius

radius = 6378136.3

print*,radius

END

我已阅读其他链接(Precision problems of real numbers in Fortran),但它没有解释如何解决此问题。

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因不是因为您使用的变量缺乏精度,而是因为您使用单个精度数字初始化了值。

请查看this answer以获得更好的解释,并为任何大型程序提供优雅的问题解决方案。

如果您只想快速解决问题,那么您只需更改一行:

radius = 6378136.3d0

虽然由于浮点精度,这仍然会给你6378136.2999999998的值。