gpt4 book ai didi

c++ - 有没有标准方法可以在 C++ 中获取第 n 个 `nextafter` 浮点值

转载 作者:行者123 更新时间:2023-12-03 22:55:59 24 4
gpt4 key购买 nike

C++ 有 std::nextafter() ,它返回给定浮点值 f 之后的下一个可表示值。在我的例子中,我想在较低的尾数位中允许 n 位的斜率,所以 3 位的斜率需要在某个给定值 f 之后获得第 8 个下一个值。我可以打电话nextafter()八次,但是有没有更好的方法来处理这个问题?

对于大多数值,您可以将 FP 值转换为 uint_64。 ,添加容差( 1<<3 表示 3 位斜率),然后转换回 double ,感谢 IEEE 754 的布局。然而,这依赖于 IEEE 754 浮点数(一个很好的假设,但也不是坚如磐石)。

(作为背景,我想用它来提升光线-表面交点,由于 FP 不精确,这些交点偶尔位于表面内部。熟悉稳健浮点的人会明白为什么 epsilon 是一个糟糕的解决方案。)

最佳答案

据我所知,这没有标准功能。 Boost 已经涵盖了你:见 boost::math::float_advance .如果您使用它来比较两个浮点数,您可能需要 boost::math::float_distance 反而。

关于c++ - 有没有标准方法可以在 C++ 中获取第 n 个 `nextafter` 浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59328864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com