Если следующее представимое значение после -0,0 равно +0,0, то почему nextafter (-0,0, БЕСКОНЕЧНОСТЬ) не возвращает +0,0?

Если следующее представимое значение после -0.0 тогда почему nextafter(-0.0, INFINITY) не возвращается +0.0?

2 ответа

Решение

Если следующее представимое значение после -0,0 равно +0,0 ....

Ложная посылка.
и имеют одинаковую ценность .
if (-0.0 == +0.0)это верно .

«функции определяют следующее представимое значение » (C17dr § 7.12.11.3 2)

nextafter(-0.0, INFINITY) а также nextafter(+0.0, INFINITY) оба возвращаются DBL_TRUE_MIN.


+0.0 а также -0.0часто не имеют функциональной разницы. Иногда они действительно имеют значение .


Дополнительно: будьте готовы к C2X с ожидаемой поддержкой десятичных чисел с плавающей запятой, поскольку существует множество наборов кодировки decimal64, которые имеют одинаковое значение . Повторное использование nextafter() and friends не образует последовательность через все кодировки FP.

Потому что +0 - это не «после» -0, поскольку оно равно -0.

Другие вопросы по тегам