Как объявляется ответ?Если это реальная единичная точность, вы можете ожидать только около 6 десятичных цифр точности.
Кроме того, значения преобразуются в двоичные для внутреннего хранения и вычислений.Это может вызвать округление и другие проблемы, но разница здесь слишком велика, чтобы быть причиной.
Чтобы объявить ответ с двойной точностью, используйте следующее:
integer, parameter :: DRK = selected_real_kind (14)
real (kind=DRK) :: answer
Это гарантирует, что ответ будет содержать не менее 14 десятичных цифр.«DRK» может использоваться во всей вашей программе.В зависимости от вашего компилятора, вы можете попробовать запросить еще больше цифр ... он может предоставить такой тип.Редко требуется более чем двойная точность.