Я перевожу код с Фортрана. Я получаю странное поведение во время задания. Я знаю, что добавление кода может быть очень полезным, но я не могу добавить точный код (я не авторизован), и мне не удалось его воспроизвести.
Строки следующие (qk был предопределен, а qk1 не был):
print*,"qk",qk
print*,"qk1",qk1
QK1=QK
print*,"qk",qk
print*,"qk1",qk1
и я печатаю эти значения:
qk 21909779.000000000
qk1 6.44842193E+32
qk 21909779.000000000
qk1 21909780.0
Дело в том, что я ожидал получить qk1 равным qk... почему они разные? Когда я пытаюсь воспроизвести его, очевидно, я получаю те же самые значения.
Поскольку я не добавлял код, я не ожидаю точного ответа... кто-нибудь знает, что нужно проверить?
qt
. Я всегда подозреваю, что то, что может быть небрежной опечаткой при публикации кода в SO, является результатом небрежности при кодировании... - person High Performance Mark   schedule 19.01.2020spacing(qk1)
, вы обнаружите, что оно равно2
. Другими словами, значения с плавающей запятой одинарной точности в этой области либо все нечетные, либо все четные. В этом случае кажется, что они все даже. - person RussF   schedule 20.01.2020qk
, скорее всего, является числом двойной точности, которое может содержать это значение, ноqk1
имеет более низкую точность. Отсюда и округление. - person kvantour   schedule 20.01.2020