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

Python浮点数相加为何返回15位小数结果?

Python浮点数运算出现长小数位的原因

这是因为Python默认采用IEEE 754双精度浮点数标准存储和计算小数,核心问题在于:很多十进制有限小数无法被二进制精确表示。

举个简单的例子,十进制的0.1转成二进制是无限循环的0.0001100110011...,而双精度浮点数只能保留53位有效二进制位,所以存储时会被截断,最终存的是一个近似值,而非精确值。

回到你的计算:3.14和2.74这类十进制小数,本质上在二进制里都是无限循环的,Python存储的是它们的近似值。当你执行加法运算时,两个近似值的误差会累积,原本被隐藏的精度问题就会显现出来,导致结果出现15位左右的长小数位。

你可以直接在Python里验证这个现象:

print(3.14)          # 输出 3.1400000000000001243...
print(2.74)          # 输出 2.7400000000000002132...
print(3.14 + 2.74)   # 输出 5.8800000000000007027...

如果需要精确的十进制运算,可以使用Python标准库的decimal模块,它能按十进制规则处理数值,避免二进制近似的问题:

from decimal import Decimal

num1 = Decimal('3.14')
num2 = Decimal('2.74')
print(num1 + num2)  # 精确输出 5.88

注意必须用字符串来初始化Decimal对象,要是直接传浮点数,还是会带入之前的近似误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:44:57