Fortran如何将实数转换为Integer

时间:2017-08-25 15:17:45

标签: fortran fortran77

例如,

SUBROUTINE DoSomething (Z,L)                             
  IMPLICIT DOUBLE PRECISION (A-H,O-Z)                               

  D=Z*77.1234567D0                                           
  L=D                                                      

  RETURN                                                         
 END     

为了说话,我们假设D等于 -1.5 ,在这种情况下,L等于 -1或-2。换句话说,是向上舍入还是向下舍入?

提前致谢。

2 个答案:

答案 0 :(得分:6)

使用内部函数int后,转换为整数类型以进行赋值。效果定义为(F2008 13.7.81)

  

如果A是真实类型,则有两种情况:如果| A |< 1,则INT(A)的值为0;如果| A | ≥1,INT(A)是整数,其大小是不超过A的大小且其符号与A的符号相同的最大整数。

在这种情况下,L将采用值-1

答案 1 :(得分:2)

使用最近的整数NINT()INT()INT()仅返回数字的带符号整数部分。 NINT()的工作原理如下:

  

如果a大于零,则NINT(a)的值为INT(a + 0.5);如果a小于或等于零,则NINT(a)的值为INT(a-0.5)。

具体为NINT(0.5d0) = 1