需要按明确的小数规则整理数据时,先区分数值表示和显示格式。Decimal提供十进制运算,但输入方式、精度和舍入规则仍需要你明确选择。

避免先经过二进制浮点数
用Decimal("0.1")直接表达十进制文本,比先构造float再转入Decimal更能保留原始十进制意图。后者会带入浮点表示的细节。若数据来自CSV等文本,解析时就应确定需要哪种数值类型。
舍入规则应写在代码里
示例用quantize指定保留两位小数,并显式采用ROUND_HALF_UP,所以2.345得到2.35。这是一条演示规则,不代表任何业务都应采用同样方法;正式程序应按数据规范决定何时舍入、保留几位。
别把格式化当成原值改变
屏幕显示两位小数,与后续运算是否已经舍入,是不同问题。过早截断中间结果可能累积误差,过晚舍入也可能不符合约定。为正数、负数及边界值分别准备预期结果,再把规则固化成测试。
可以运行的练习
from decimal import Decimal, ROUND_HALF_UP
value = Decimal("2.345")
result = value.quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
assert result == Decimal("2.35")
assert Decimal("0.1") + Decimal("0.2") == Decimal("0.3")
print(result)
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
Python:decimal。资料查阅日期:2026年9月24日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年9月24日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






