gpt4 book ai didi

c++ - 我可以写 const expression double 是两个 ulp 小于 -0.5

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:39 29 4
gpt4 key购买 nike

我有一组基于通过 json 数据包接收到的数字的浮点计算。在计算结束时,我要求其中一个数字 >= -0.5。我发现有时我有一个未通过测试的值,因为它是一个 ULP低于阈值。无论如何要写一个constexpression,意思是像

constexpr auto threshold = -0.5 - 2*ULP;

还是我必须求助于类似的东西

auto threshold = -0.5;
threshold = std::nexttoward(threshold, -2.0);
threshold = std::nexttoward(threshold, -2.0);

最佳答案

您应该能够使用 epsilon 达到所需的阈值,例如

constexpr auto threshold = -0.5 - std::numeric_limits<double>::epsilon();

可能添加 *2 如果你认为你真的需要它,虽然因为 epsilon 是为值 1.0 定义的,它可能只是0.5 适合您。


或者,不要将它用作 constexpr。除非它是一些对性能非常敏感的代码中的一些内部循环,否则差异应该可以忽略不计:

const auto threshold = std::nexttoward(std::nexttoward( -0.5, -2.0), -2.0);

关于c++ - 我可以写 const expression double 是两个 ulp 小于 -0.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568999/

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