c++ - 生成下一个最大或最小的可表示 float ,无需位旋转

标签 c++ floating-point

给定一个任意的有限 float ,有没有办法确定下一个可表示的 float 是什么?例如,给定 1.0f,根据定义,下一个最大的可表示数是 1.0f + std::numeric_limits::epsilon()。有没有一种方法可以为任何值合成一个 epsilon - 而不仅仅是 1.0f - 而无需求助于位旋转和/或机器如何表示浮点值的明确知识?

最佳答案

在 C++11 中,您使用 std::nextafter()。缺少这一点,在 C99 系统上,您可以使用 C 数学库中的 nextafterfnextafternextafterl(对于类型 floatdoublelong double)。

关于c++ - 生成下一个最大或最小的可表示 float ,无需位旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408407/

相关文章:

assembly - 如何在 x86 ASM 中将整数转换为浮点值?

math - float 学有问题吗?

python - 表示 float 的字符串

assembly - 从 5 位浮点表示计算值

c++ - 特化错误 : confilct between template member function and overloaded non-template function

c++ - 如何在 UTF-16 中生成 Thrift 类?

c++ - GCC 和 Clang 在与 __builtin_constant_p 相关的 static_assert 方面有所不同

c++ - 为什么在一段时间后我不断收到 MySQL 客户端内存不足错误...?

Python 错误类型字符串

c++ - 超出范围的枚举转换能否产生基础类型之外的值?