You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python整数与浮点数求和精度异常是否为Bug?

为什么Python整数加浮点数会出现精度误差,而C++看起来正常?

这绝对不是Python的Bug,核心原因是二进制浮点数的固有精度限制,和编程语言无关。

浮点数的存储本质

计算机用二进制格式存储浮点数(Python和C++默认都采用IEEE 754标准的双精度浮点数),但大部分十进制小数无法被二进制浮点数精确表示——比如你用到的0.12、0.23,它们转换成二进制是无限循环的小数,存储时只能取一个最接近的近似值。当整数和这个近似值相加后,转换回十进制就会出现肉眼可见的微小误差,比如12+23.12得到35.120000000000005,就是这个近似过程带来的结果。

为什么C++看起来“正常”?

不是C没有这个误差,而是它默认的输出规则帮你“隐藏”了误差。C的cout默认只会显示6位有效数字,会自动截断或四舍五入后面的小数位。如果你强制让C++输出更高精度的结果,就能看到和Python一模一样的误差:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    cout << setprecision(15) << (12 + 23.12) << endl;
    // 输出结果会是35.120000000000005
    return 0;
}

怎么在Python里得到“符合预期”的显示?

如果只是想让输出看起来整洁,可以用round()函数指定保留的小数位数:

print(round(12 + 23.12, 2))  # 输出35.12

如果需要高精度的十进制运算(比如金融场景),可以用Python内置的decimal模块,它能以十进制方式处理数值,避免二进制转换带来的误差。

内容的提问来源于stack exchange,提问作者Ali Heydarov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:35:28