gpt4 book ai didi

c++ - 如何控制 double 计算以避免 C++ linux x86_64 中的舍入错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:21 25 4
gpt4 key购买 nike

在 linux x86_64 上的 C++ 代码中,我需要 double 计算(+ 或 -)。

26.100000000000001 - 26 + 0.10000000000000001

我得到了:

0.20000000000000143

我想得到 0.2。

此处不导入显示格式,计算结果将用于一些if-else分支条件。所以,我只希望 if-else 条件比较小数点后的 4 位数字。

这似乎是一个舍入错误?

如何限制计算精度为小数点后4位?

我不想调用任何函数以避免开销。

由于转换开销,我不想使用 stringstream。

有什么更好的主意吗?

谢谢

最佳答案

计算精度很好。这是您要控制的显示精度。你可以用 setprecision() 做到这一点如果使用 <iostream>或类似 "%.4f" 的格式化程序如果使用 <stdio.h> .

您已经在调用函数,因为您将结果显示为十进制!

附言0.1不能用 float 精确表示, double , 或任何二进制尾数格式。它会影响 (1/2) * (1/5) , 和十进制 1/5是无限重复的二进制数字序列。

附言去看看GMP .这可能是您最大的希望。

关于c++ - 如何控制 double 计算以避免 C++ linux x86_64 中的舍入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630957/

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