gpt4 book ai didi

c++ - 在 C++ 中使用 double/float 类型时如何设置精度

转载 作者:太空狗 更新时间:2023-10-29 19:53:52 26 4
gpt4 key购买 nike

在我之前的问题中 Comparing a double and int, without casting or conversion ,我发现了两个 double 之间的差异是如何影响比较的。

我遇到了 setprecision() 方法,它有助于显示小数点后的所有数字。

因此,发现 6.15 和 3.15 的差异是:3.00000000000000044408920985006

现在,当它与 3 进行比较时,它会返回一个大于 3 的结果。

我如何强制它只接受有限的数字?

当我使用 6.1 和 3.1 时,差异是:2.99999999999999955591079014994

如何做精度才能知道实际上等于3,并且不小于。

最佳答案

希望您应该知道 floating/double 不能准确地用二进制表示,并且由于循环小数而发生截断。将 float / double 与整数进行比较总是会失败。

即使您使用 setprecision 也不起作用,因为它是 iomanip 的一种方法,用于设置显示精度而不是存储的值。

比较 double 的可移植方法不是使用“==”运算符,而是做类似的事情

bool Compare(double a,double b) {
std::fabs(a - b) < std::numeric_limits<double>::epsilon();
}

您可以使用它来比较 double 与 float 和/或 integer。你也可以为float写一个类似的比较函数

bool Compare(float a,float b) {
std::fabs(a - b) < std::numeric_limits<float>::epsilon();
}

关于c++ - 在 C++ 中使用 double/float 类型时如何设置精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10420448/

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