如何在Python Pint中使用货币单位?以USD定义为例
在Pint中定义货币单位(如USD)进行计算
要解决UndefinedUnitError,你需要手动将货币单位添加到Pint的单位注册表中——默认注册表不包含这类自定义单位。以下是两种可行的实现方法:
方法1:动态添加单位(适合单脚本场景)
直接在代码里用define()方法注册USD单位,将其标记为[currency]自定义维度,确保货币与其他物理量不会被错误换算:
import pint ureg = pint.UnitRegistry() # 注册USD作为货币维度的基本单位 ureg.define('USD = [currency]') kg = ureg.kg USD = ureg.USD weight = 2.3 * kg price = 1.49 * USD / kg cost = weight * price print(f"{cost:~.2f}")
运行后输出:
3.43 USD
如果需要支持多货币换算,可补充关联定义,示例如下:
ureg.define('EUR = 0.92 * USD') # 汇率可根据实际情况调整
方法2:加载自定义单位文件(适合多脚本复用)
若要在多个项目文件中复用货币单位,可创建自定义单位定义文件(比如custom_units.txt),内容示例:
USD = [currency] EUR = 0.92 * USD GBP = 0.79 * USD
然后在代码中加载该文件初始化注册表:
import pint ureg = pint.UnitRegistry('custom_units.txt') # 后续使用方式与方法1一致 kg = ureg.kg USD = ureg.USD # ... 其余计算代码相同
关键说明
Pint默认单位集聚焦物理量,不包含货币类单位,因此必须手动注册;用[currency]作为维度能保证货币单位与其他物理量(如质量、长度)的计算隔离,避免逻辑错误。
内容的提问来源于stack exchange,提问作者Barry Andersen
相关产品推荐
相关产品推荐

