Целочисленное деление#

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