我是Fortran90的新手,我编写了一个简单的程序来添加两个浮点数,如下所示:
program Numbers_sum
implicit none
REAL :: sum
sum = 1.6+2
print*,"Sum =", sum
end
我的答案为Sum = 3.5999999
为什么没有3.6
。我怎样才能使这个程序得到确切的答案?任何帮助将不胜感激。
答案 0 :(得分:0)
无法在有限位数的基数2中写入3.6。这是write(*, '(F11.6)') sum
但是,您可以通过选择正确的格式来隐藏舍入错误:
REAL(KIND=8) :: var
如果您想以更高的精度计算,可以使用:
program numbers_sum
implicit none
integer, parameter :: dp = selected_real_kind(P=12)
real(kind=dp) :: sum1
sum1 = 1.6_dp + 2
print *, "Sum = ", sum1
end
或者,如果你想要做得恰到好处:
{{1}}
但即使这样也不会完全消除四舍五入。
干杯