为何0.1 + 0.2在Python中结果为0.30000000000000004?
为什么0.1 + 0.2不等于0.3?
这不是Python的专属问题,所有遵循IEEE 754双精度浮点数标准的编程语言(比如Java、JavaScript)都会出现这个现象,核心原因是十进制小数的二进制表示限制:
- 十进制里的0.1和0.2,转换成二进制后是无限循环的小数,就像十进制无法精确表示1/3(0.3333...)一样。比如0.1的二进制是
0.0001100110011...(循环节为0011)。 - 计算机存储浮点数时,只能保留有限位数(双精度是64位),所以这些无限循环的二进制小数会被截断或舍入,产生微小的误差。
- 当0.1和0.2的近似值相加时,误差累积,最终得到的结果就是
0.30000000000000004,而非精确的0.3。
验证代码:
print(0.1 + 0.2) # 输出:0.30000000000000004
如果需要精确的十进制计算,可以使用Python内置的decimal模块:
from decimal import Decimal print(Decimal('0.1') + Decimal('0.2')) # 输出:0.3
内容的提问来源于stack exchange,提问作者mag bit
相关产品推荐
相关产品推荐

