У меня хорошее настроение, поэтому я попытаюсь ответить на этот вопрос, который представляет собой базовые знания, которые можно легко найти в Google (как уже было указано в комментариях к этому и вашему предыдущему вопросу).
К счастью, Fortran предоставляет несколько действительно интересных встроенных функций, позволяющих получить некоторое представление о числах с плавающей запятой.
8 цифр, о которых вы говорите, являются эмпирическим правилом и могут быть связаны с функцией EPSILON(x)
, которая печатает наименьшее отклонение от 1, которое может быть представлено в выбранной модели (например, REAL4). Это значение на самом деле 1.19e-7, что означает, что ваша 8-я цифра, скорее всего, неверна. Пишу скорее всего потому, что некоторые числа можно представить точно.
В случае PI
наименьшее представимое отклонение может быть напечатано с использованием встроенного SPACING(PI)
. Это показывает значение 2,38e-7, которое немного больше, чем эпсилон, и все еще допускает 7 правильных цифр.
Теперь, почему ваше значение PI сохраняется как 3.14159012
? Когда вы сохраняете число с плавающей запятой, вы всегда сохраняете ближайшее представимое число. Используя значение интервала, мы можем получить возможные значения для вашего пи. Возможные числа и их отличия от вашего значения 3.14159
:
3.14158988 1.20E-007
3.14159012 -1.18E-007
3.14159036 -3.56E-007
Как видите, 3.14159012
является ближайшим возможным значением к 3.14159
и поэтому сохраняется и печатается.
person
Stefan
schedule
19.05.2014