在计算中使用 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,它将转换为最接近的小整数。
唯一的区别是:在第一种情况下,浮点数会被忽略,而在第二种情况下,整个数字都会被转换。
最终,两者的结果是一样的。 (仅在这种情况下)
但建议使用正确的函数进行正确的计算。
考虑这个例子:
program test
print *,int(-1.2)
print *,floor(-1.2)
end program
INT
会return-1
,FLOOR
会return-2
!所以,不,这两个说法是不一样的!
合并对问题的更改:NINT
rounds to the nearest integer, and returns an integer
. CEILING
与 FLOOR
相反,return 将是下一个最大的整数。
我正在使用计算来定位基本像素。在我看来,当我尝试几个例子时,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,它将转换为最接近的小整数。
唯一的区别是:在第一种情况下,浮点数会被忽略,而在第二种情况下,整个数字都会被转换。
最终,两者的结果是一样的。 (仅在这种情况下) 但建议使用正确的函数进行正确的计算。
考虑这个例子:
program test
print *,int(-1.2)
print *,floor(-1.2)
end program
INT
会return-1
,FLOOR
会return-2
!所以,不,这两个说法是不一样的!
合并对问题的更改:NINT
rounds to the nearest integer, and returns an integer
. CEILING
与 FLOOR
相反,return 将是下一个最大的整数。