gpt4 book ai didi

c++ - 如何通过最小增量(或接近它)改变 float ?

转载 作者:IT老高 更新时间:2023-10-28 13:58:13 26 4
gpt4 key购买 nike

我有一个 doublef 并且想要一种方法将其微调得稍微大一点(或小一点)以获得一个尽可能接近的新值与原始值相比,但仍严格大于(或小于)原始值。

它不必关闭到最后一点——更重要的是,我所做的任何更改都保证会产生不同的值,而不是返回到原来的值。

最佳答案

检查您的 math.h 文件。如果你幸运的话,你有 nextafternextafterf定义的功能。它们以可移植且独立于平台的方式完全满足您的需求,并且是 C99 标准的一部分。

另一种方法(可能是备用解决方案)是将 float 分解为尾数和指数部分。递增很简单:只需将尾数加一即可。如果你得到一个溢出,你必须通过增加你的指数来处理这个问题。递减的工作方式相同。

编辑:正如评论中所指出的,只需在其二进制表示中增加 float 就足够了。尾数溢出将增加指数,这正是我们想要的。

简而言之,这与 nextafter 所做的相同。

不过,这不会是完全可移植的。您将不得不处理字节顺序以及并非所有机器都具有 IEEE float 的事实(好的 - 最后一个原因更具学术性)。

同时处理 NAN 和无限可能有点棘手。您不能简单地增加它们,因为它们根据定义而不是数字。

关于c++ - 如何通过最小增量(或接近它)改变 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155378/

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