当我运行下面的代码时,我得到输出6378136 .5 而不是6378136 .3
PROGRAM test
implicit none
real*8 radius
radius = 6378136.3
print*,radius
END
我已阅读其他链接(Precision problems of real numbers in Fortran),但它没有解释如何解决此问题。
答案 0 :(得分:1)
发生这种情况的原因不是因为您使用的变量缺乏精度,而是因为您使用单个精度数字初始化了值。
请查看this answer以获得更好的解释,并为任何大型程序提供优雅的问题解决方案。
如果您只想快速解决问题,那么您只需更改一行:
radius = 6378136.3d0
虽然由于浮点精度,这仍然会给你6378136.2999999998
的值。