我正在使用计算来定位基本像素。在我尝试一些例子时,我觉得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
答案 0 :(得分:1)
考虑这个例子:
program test
print *,int(-1.2)
print *,floor(-1.2)
end program
INT
将返回-1
,FLOOR
将返回-2
!所以,不,这两个陈述是不一样的!
要将更改合并到问题中:NINT
舍入到最接近的整数,并返回integer
。 CEILING
与FLOOR
相反,将返回下一个最大整数。
答案 1 :(得分:-2)
仅在此场景
中始终为TRUE当使用'int'函数存储在ix中的值时,它将忽略浮点值并只考虑小数点前的整数。 如果是Floor,它将转换为最接近的整数。
唯一的区别是:在第一种情况下,忽略浮点数,在第二种情况下,转换整个数字。
最终,结果都是一样的。 (仅限于此方案) 但建议使用正确的函数进行正确的计算。