💰 Python 标准库 - decimal 精确小数计算
📌 模块用途
decimal 模块提供十进制浮点数运算,适用于对精度要求极高的领域,如:
- 财务计算(避免浮点误差)
- 税率/利率等金融业务
- 科学或工程中不能容忍误差的运算
与 float 不同,decimal.Decimal 使用十进制近似值,可以避免传统浮点误差。
🔧 1️⃣ 导入模块与基本使用
从 decimal 导入 Decimal
价格 = Decimal("19.99")
数量 = Decimal("3")
总价 = 价格 * 数量
打印(总价)
注意: 要用 Decimal("字符串"),不要用浮点数 Decimal(19.99),否则仍会引入误差!
📉 2️⃣ 与 float 的对比
打印(0.1 + 0.2)
打印(Decimal("0.1") + Decimal("0.2"))
⚙️ 3️⃣ 设置精度与四舍五入规则
可使用 getcontext() 设置精度、舍入方式等。
从 decimal 导入 Decimal, getcontext, ROUND_HALF_UP
getcontext().prec = 4 # 设置全局精度为 4 位
getcontext().rounding = ROUND_HALF_UP # 设置四舍五入
数值 = Decimal("10") / Decimal("3")
打印(数值)
🔢 4️⃣ 常见方法
quantize():保留指定小数位数sqrt():计算平方根ln()、exp():自然对数和指数compare():数值比较(返回 Decimal(-1), 0, 1)
示例:保留两位小数
金额 = Decimal("5.6789")
结果 = 金额.quantize(Decimal("0.01"))
打印(结果)
📌 小结
| 特性 | 说明 |
|---|---|
| 精度 | 任意设置 |
| 适用场景 | 金融、税收、科学计算 |
| 推荐用法 | 使用字符串初始化 |