本文介绍了Fortran无法在865398.78和-865398.78之间进行添加?为什么答案是-0.03?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In the code below I am adding together 865398.78 and -865398.78. I expect to get 0, but instead I get -0.03.

源代码:

Source Code:

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

结果:

Result:

x=  -865398.780000000     
x+865398.78= -3.000000002793968E-002

我在使用读取代码时出错或其他什么东西?

Am I wrong with the usage of "read" codes or something else?

推荐答案

数字865398.78在您的代码中以单精度表示。单精度可以处理大约7位有效数字,而你的数字有8位。你可以通过编写双精度来达到双精度。

The number 865398.78 is represented in single precision in your code. Single precision can handle about 7 significant digits, while your number has 8. You can make it double precision by writing

x=x+865398.78_8

这篇关于Fortran无法在865398.78和-865398.78之间进行添加?为什么答案是-0.03?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 04:12