由于浮点数有限,而且每个浮点数都可以比较(我认为),所以必须始终存在一个数字'b',
即“下一个”较小的浮点数。我想知道是否:
尝试
float smaller(float a) return a - 0.00...001f;
我看来,像一个黑客,可能并不适用于所有可能的输入,但我可能是错的,所以这就是为什么我转向你们。感谢您的帮助。
答案 0 :(得分:5)
确实存在。您正在使用“下一代”功能系列。
这些可用于从一个浮点数移至下一个浮点数,其方式与您可以对整数类型使用++
和--
相同。
请参见https://en.cppreference.com/w/c/numeric/math/nextafter
(这是C文档)。
答案 1 :(得分:5)
The C99/POSIX functions nextafter
/nexttoward
可以做到这一点。您提供一个起始值x
和一个目标值y
,它们会从起始位置向目标方向返回下一个值。