整数除法#
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