IEEE 754 с двойной точностью до одинарной точности - PullRequest
5 голосов
/ 07 февраля 2012

Я хотел бы знать, как Фортран 95 (f95) конвертирует двойную точность (DP) с показателем, большим, чем можно удерживать в показателе с одинарной точностью (SP).

Итак, скажем, у меня есть некоторый номер DP с показателем, большим, чем тот, который можно сохранить в типе данных SP. Это просто максимизирует показатель степени и нарезает мантиссу и сохраняет ее таким образом, или же происходит что-то еще.

Если это правильно, то означает ли это, что в любой момент, когда показатель степени слишком велик при переходе от DP к SP, я получу либо +, либо - Infinity (если в мантиссе для DP были нули в первых 8 битах) и NaN (если какой-либо из первых 8 битов в мантиссе был 1)?

Большое спасибо за помощь !!!!

1 Ответ

7 голосов
/ 07 февраля 2012

Да, если вы попытаетесь сохранить переменную двойной точности a в переменной одинарной точности b, в то время как a не находится в диапазоне [-HUGE(b),HUGE(b)], b станет +Inf или -Inf, в зависимости от знака a.

Это действительно желаемое поведение - функция, которая улавливает плавающие переполнения и чрезвычайно помогает при отладке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...