货币工具 - 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 参考 文档。