我使用fortran编写以下代码:
implicit none
real a,b
integer c
a=0.04
b=0.001
c=a/b
我得到的是39,我无法弄清楚为什么。当我将real设置为a和b时,它们是单精度的,这意味着它足够准确,可以使此操作得到40的正确答案。 谁能解释一下?
答案 0 :(得分:1)
对于c
和integer
(默认类型),作业c=a/b
相当于c=INT(a/b)
。 INT
使得一个略小于40的实数被映射到39。
你对
有什么看法?print *, 0.04, 0.001, 0.04/0.001, INT(0.04/0.001)
?如果您真的想看到40,请在阅读popular link后考虑NINT
。