gpt4 book ai didi

完整正方形的 C++ sqrt 函数精度

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:11 24 4
gpt4 key购买 nike

设,x 是一个整数并且y = x * x

那么是否保证sqrt(y) == x

例如,我能否确定 sqrt(25)sqrt(25.0) 将返回 5.0,而不是 5.0000000003 还是 4.999999998

最佳答案

符合 IEEE-754 标准的基本操作允许错误的实现(其中 sqrt 是一个示例)要求正确舍入值。
这意味着误差将小于 1/2 ULP(最后一位的单位)或基本上尽可能接近实际答案。

要回答您的问题,如果实际答案完全可以用 double 表示,那么您将得到准确的答案。

注意:这不是由 C++ 标准保证的,而是 IEEE-754 标准保证的,这对大多数人来说可能不是问题。

最终,一个简单的测试应该足以满足您的目的:

    for(int i = 0; i < (int)std::sqrt(std::numeric_limits<int>::max()); i++)
{
assert((int)(double)i == i);//Ensure exactly representable, because why not
assert(std::sqrt((double)i*i) == i);
}

如果一切顺利,我认为没有任何理由担心。

关于完整正方形的 C++ sqrt 函数精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137105/

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