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

为什么Python计算精确十进制数时会输出近似值?

运算结果偏差原因

这个现象是二进制浮点数存储精度的固有局限性导致的,和你写的函数逻辑没有关系:

  • 计算机底层使用二进制存储浮点数,绝大多数十进制小数都无法被精确表示,类似十进制无法精确表示分数1/3的情况。你传入的参数1/5对应的十进制0.2转换为二进制是无限循环小数,Python默认的float类型为双精度64位浮点数,存储时只能保留固定位数的有效数字,从赋值开始就自带了微小的精度误差。
  • 后续的平方、减法运算会逐步累加这个微小误差,最终就出现了和理论值0.32有可观测偏差的结果。

解决方法

如果需要得到精确的十进制运算结果,可以使用两种方案:

  • 用Python标准库的decimal模块做精确十进制运算:
from decimal import Decimal

def G(x):
    x = Decimal(str(x))
    return Decimal(1) - x ** 2 - (Decimal(1) - x) ** 2

print(G(1/5)) # 输出为精确的0.32
  • 如果只需要结果符合日常展示精度,可以对返回结果做小数位截断:
print(round(G(1/5), 2)) # 输出0.32

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:11