在计算中使用 Floor 和 Int

Using Floor and Int in a computation

我正在使用计算来定位基本像素。在我看来,当我尝试几个例子时,i 和 j 的两个计算是等价的(即 i==j 总是正确的)。这总是正确的吗?

i = (int ((x - xmin) / a)) + 1
j = (floor ((x - xmin) / a)) + 1

除上述之外,以下可能会给出 i 和 j 的不同结果(即存在 i/=j 的情况)。

i = (nint ((x - xmin) / a)) + 1
j = (ceiling ((x - xmin) / a)) + 1

只有在这种情况下才会永远为真

当用'int'函数将值存入ix时,会忽略浮点值,只考虑小数点前的整数。 如果是 Floor,它将转换为最接近的小整数。

唯一的区别是:在第一种情况下,浮点数会被忽略,而在第二种情况下,整个数字都会被转换。

最终,两者的结果是一样的。 (仅在这种情况下) 但建议使用正确的函数进行正确的计算。

INT and FLOOR是不同的函数!

考虑这个例子:

program test
  print *,int(-1.2)
  print *,floor(-1.2)
end program

INT会return-1FLOOR会return-2!所以,不,这两个说法是不一样的!

合并对问题的更改:NINT rounds to the nearest integer, and returns an integer. CEILINGFLOOR 相反,return 将是下一个最大的整数。