在下面的代码中,我将865398.78和-865398.78加在一起.我希望得到0,但我得到-0.03.

源代码:
program main
real(8) :: x
open(10,file="test.txt")
read(10,*)x
print *,"x=",x
x=x+865398.78
print *,"x+865398.78=",x
end program
Run Code Online (Sandbox Code Playgroud)
结果:
x= -865398.780000000
x+865398.78= -3.000000002793968E-002
Run Code Online (Sandbox Code Playgroud)
我对"读取"代码或其他东西的使用有误吗?
数字865398.78在代码中以单精度表示.单精度可以处理大约7位有效数字,而你的数字有8位.你可以通过写入使其达到双精度
x=x+865398.78_8
Run Code Online (Sandbox Code Playgroud)