Как я могу получить до 7 значимых цифр моего результата в FORTRAN90?
INTEGER, PARAMETER :: SINGLE=SELECTED_REAL_KIND(7)
REAL(KIND=SINGLE) :: K
REAL::X
...
K=X
WRITE(*,*) K
Когда я пишу 5 или 6 внутри SELECTED_REAL_KIND
, он выводит шесть значащих цифр, но когда я пытаюсь 7, он выводит больше 7. Можете ли вы сказать мне, почему? Где я ошибся? Назначение проблематично?
С выходом 5 и 6-> 1.39256
С 7 выходами-> 1,3925623893
Окей, я задаю простой вопрос. Как я могу просто вывести 7 значащих цифр этого числа 1.3925623893?
1 ответ
Из документации Гфортран:
SELECTED_REAL_KIND (P, R) возвращает значение типа реального типа данных с десятичной точностью не менее P цифр
По крайней мере, важно. Числа с плавающей запятой большую часть времени хранятся с использованием 4 байтов (одинарная точность) или 8 байтов (двойная точность) и все. Это означает, что запрос от 6 до 7 значащих цифр добавляет еще больше цифр: вы переключились с одинарной на двойную точность.
Что вам действительно нужно, так это иметь достаточно большой размер, чтобы хранить желаемую точность, и вы уже сделали это правильно, а затем отобразить только 7 значащих цифр в таком формате:
write(*,'(F12.7)') K