整数除法#

Fortran 区分浮点运算和整数运算。重要的是要注意整数除法总是使用整数算术。此外,虽然 Fortran 使用标准的操作顺序(例如,在没有括号的情况下,乘法和除法在加法和减法之前),但相同优先级的操作是从左到右计算的。考虑以下奇数整数除法的示例:

integer :: n
n = 3
print *, n / 2  ! prints 1
print *, n*(n + 1)/2  ! prints 6
print *, n/2*(n + 1)  ! prints 4 (left-to-right evaluation order)
n = -3
print *, n / 2  ! prints -1

在实际情况中,请注意你是否真的需要使用整数算术。 如果要改用浮点算术,请确保在使用除法运算符之前强制转换为实数,或通过乘以1.0_dp来分隔整数:

integer :: n
n = 3
print *, real(n, dp) / 2  ! prints 1.5
print *, n * 1.0_dp / 2  ! prints 1.5
n = -3
print *, real(n, dp) / 2  ! prints -1.5
print *, n * 1.0_dp / 2  ! prints -1.5