Fortran 双精度
Fortran DOUBLE precision
当我对双精度值进行求和时:
REAL*8 :: a
INTEGER :: p
a = 0.0d0
DO p = 1,10
a = a + 1d-04
END DO
我得到以下答案:
p =1 - a = 1.000000000000000D-004
p =2 - a = 2.000000000000000D-004
p =3 - a = 3.000000000000000D-004
p =4 - a = 4.000000000000000D-004
p =5 - a = 5.000000000000000D-004
p =6 - a = 6.000000000000001D-004
为什么在交互 p=6 中我得到变量末尾的数字 1 'a'?
在 Fortran 中,双精度数(或实数)是浮点数(例如参见 [=10=] )。
浮点数不能正确表示每一个十进制数,会出现舍入错误。
当我对双精度值进行求和时:
REAL*8 :: a
INTEGER :: p
a = 0.0d0
DO p = 1,10
a = a + 1d-04
END DO
我得到以下答案:
p =1 - a = 1.000000000000000D-004
p =2 - a = 2.000000000000000D-004
p =3 - a = 3.000000000000000D-004
p =4 - a = 4.000000000000000D-004
p =5 - a = 5.000000000000000D-004
p =6 - a = 6.000000000000001D-004
为什么在交互 p=6 中我得到变量末尾的数字 1 'a'?
在 Fortran 中,双精度数(或实数)是浮点数(例如参见 [=10=] )。 浮点数不能正确表示每一个十进制数,会出现舍入错误。