跳到主要内容

💰 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"))
打印(结果)

📌 小结

特性说明
精度任意设置
适用场景金融、税收、科学计算
推荐用法使用字符串初始化