Если следующее представимое значение после -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.