如果 -0.0 之后的下一个可表示值是 +0.0,那么为什么 nextafter(-0.0, INFINITY) 不 return +0.0?

If the next representable value after -0.0 is +0.0, then why nextafter(-0.0, INFINITY) does not return +0.0?

如果-0.0之后的下一个可表示值是+0.0,那为什么nextafter(-0.0, INFINITY)不return +0.0

因为 +0 不是“在”-0 之后,因为它比较等于 -0。

If the next representable value after -0.0 is +0.0 ....

前提错误。
-0.0+0.0 具有相同的
if (-0.0 == +0.0)true

nextafter()“函数确定下一个可表示的 ”(C17dr § 7.12.11.3 2)

nextafter(-0.0, INFINITY)nextafter(+0.0, INFINITY) 都 return DBL_TRUE_MIN.


+0.0-0.0 通常没有功能上的区别。有时他们确实会 difference.


高级:为 C2X 准备好预期的十进制浮点支持,因为有许多 decimal64 的编码集具有相同的 。重复使用 nextafter() 和朋友不会通过所有 FP 编码形成序列。