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

Python如何对大数字字符串求和,避免转FLOAT出现精度丢失

高精度数字字符串求和实现方案

Python 内置的 decimal 标准库是专门用于处理十进制高精度运算的工具,直接用它即可完全避免float转换带来的精度丢失问题。

实现代码

from decimal import Decimal

str1 = '5.123654879542658'
str2 = '8.777548795426584'

# 直接传入字符串初始化Decimal,全程无精度损失
sum_result = Decimal(str1) + Decimal(str2)
# 转为字符串输出
print(str(sum_result))

上述代码运行输出结果为 13.9012036749693164,和十进制手动计算的结果完全一致。

原写法精度丢失的原因

float类型本质是双精度二进制浮点数,无法精确表示所有十进制小数,你在将字符串转为float的步骤就已经出现了精度损失,相加后的结果自然无法保证准确。

额外注意事项

  • 初始化Decimal对象时必须直接传入数字字符串,不要先转float再传入,否则仍然会引入精度误差
  • 如果需要自定义结果的小数位数,可以使用quantize方法处理,例如保留8位小数的写法为:sum_result.quantize(Decimal('0.00000000'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:04