货币工具 - MoneyUtil¶
由来¶
货币计算中浮点精度问题会导致金额错误(如 0.1 + 0.2 != 0.3)。MoneyUtil 使用 Decimal 精确运算,提供元/分转换和含税/不含税价格计算。
方法¶
元/分转换¶
from hutool import MoneyUtil
MoneyUtil.fen_to_yuan(100) # Decimal('1.00')
MoneyUtil.fen_to_yuan(1) # Decimal('0.01')
MoneyUtil.fen_to_yuan("50") # Decimal('0.50')
MoneyUtil.yuan_to_fen(1) # 100
MoneyUtil.yuan_to_fen("0.5") # 50
MoneyUtil.yuan_to_fen("0.01") # 1
税价计算¶
默认增值税率为 13%(中国标准增值税率),可通过参数自定义:
from decimal import Decimal
# 不含税价 → 含税价
MoneyUtil.gross_price(Decimal("100")) # Decimal('113.00')
MoneyUtil.gross_price(Decimal("100"), tax_rate=8) # Decimal('108.00')
# 含税价 → 不含税价
MoneyUtil.net_price(Decimal("113")) # Decimal('100.00')
MoneyUtil.net_price(Decimal("108"), tax_rate=8) # Decimal('100.00')
# 计算税额
MoneyUtil.tax_amount(Decimal("113")) # Decimal('13.00')
利润率计算¶
from decimal import Decimal
# netto — 不含税金额
MoneyUtil.netto(Decimal("100"), Decimal("0.13")) # Decimal('88.50')
# brutto — 含税金额
MoneyUtil.brutto(Decimal("100"), Decimal("0.13")) # Decimal('113.00')
# profitMargin — 利润率
MoneyUtil.profit_margin(Decimal("100"), Decimal("80")) # Decimal('25.00')
元/分互转(增强)¶
# centToYuan / yuanToCent — 与 fen_to_yuan / yuan_to_fen 相同
MoneyUtil.cent_to_yuan(100) # Decimal('1.00')
MoneyUtil.yuan_to_cent(1.00) # 100
税额计算(增强)¶
# taxAmount — 精确税额计算
MoneyUtil.tax_amount(Decimal("100"), Decimal("0.13")) # Decimal('13.00')
备注
更多方法请参阅 API 参考 文档。