Переносимый способ запроса точности с плавающей запятой в Fortran 90/95/2003 - с помощью встроенной функции selected_real_kind
. Например,
integer, parameter :: DoubleReal_K = selected_real_kind (14)
определит целое число DoubleReal_K
, которое определяет переменную с плавающей запятой по крайней мере с 14 десятичными цифрами:
real (DoubleReal_K) :: MyFloat
.
Запрос 14 десятичных цифр, как правило, приводит к плавающей запятой двойной точности с 53 битами, но единственная гарантия - 14 десятичных цифр.
Если вам нужна большая точность, используйте большее значение, чем 14, чтобы указать более длинный тип - 17 десятичных цифр могут получить расширенную точность (64 бита) или квадрупольную точность, или ничего, в зависимости от компилятора. Если у компилятора будет доступный больший тип, он предоставит его ... В противном случае, получите лучший компилятор. Почему вы используете такой старый и неподдерживаемый компилятор? Кроме того, не ожидайте точных результатов от вычислений с плавающей запятой - это нормально, если изменения вызывают небольшие изменения в результатах.