gpt4 book ai didi

c++ - 在 std::remainder() 调用 double 后检测到零

转载 作者:太空狗 更新时间:2023-10-29 20:40:24 26 4
gpt4 key购买 nike

我有这个代码:

double a = remainder(92.66, 0.01);
double b = remainder(92.87, 0.01);

结果是a = -5.33948e-15b = -2.61423e-15

这里的答案显然是零,如果我将两个数字都乘以 100 并进行整数取模,结果就是零。但我希望能够使用 double 来做到这一点。问题是余数返回的数字大于 DBL_EPSILON - 那么确定 ab 是否为〜零的正确(最佳近似)方法是什么?

最佳答案

DBL_EPSILON 是可以添加到 1.0 的最小数量。如果您的数字大于 1.0,则该数字的 epsilon 也会按比例变大。只需将 DBL_EPSILON 乘以数字即可获得阈值。

double a = remainder(92.66, 0.01);
if (a <= DBL_EPSILON * 92.66)
a = 0.0;

关于c++ - 在 std::remainder() 调用 double 后检测到零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365582/

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