Как я могу получить до 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
Другие вопросы по тегам