在计算中使用Floor和Int

时间:2015-06-15 12:14:34

标签: int fortran floor

我正在使用计算来定位基本像素。在我尝试一些例子时,我觉得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

2 个答案:

答案 0 :(得分:1)

INTFLOOR是不同的功能!

考虑这个例子:

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

INT将返回-1FLOOR将返回-2!所以,不,这两个陈述是不一样的!

要将更改合并到问题中:NINT舍入到最接近的整数,并返回integerCEILINGFLOOR相反,将返回下一个最大整数。

答案 1 :(得分:-2)

仅在此场景

中始终为TRUE

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

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

最终,结果都是一样的。 (仅限于此方案) 但建议使用正确的函数进行正确的计算。