Python pint 将 1/°华氏度转换为 1/°摄氏度

问题描述 投票:0回答:1

我使用 python 包 pint 并想计算例如1 m/°F 至 m/°C。

from pint import UnitRegistry

ureg = UnitRegistry() #autoconvert_offset_to_baseunit = True
quantity = ureg.Quantity
fromvalue = quantity(1, ureg.parse_expression("m/°F"))
result = fromvalue.to(ureg.parse_expression("m/°C"))

print(result)

我收到错误:“OffsetUnitCalculusError:偏移单位(米、华氏度)的运算不明确。请参阅 https://pint.readthedocs.io/en/stable/user/nonmult.html 获取指导。”。

我从错误消息中链接的页面中阅读了说明。它有助于理解问题,但不能提供解决方案。

如果我在解析中使用

ureg = UnitRegistry(autoconvert_offset_to_baseunit = True)
as_delta=False
,我会得到
1 meter / kelvin
作为结果,这是错误的。

我期待

1 m/°F -> 5/9 m/°C
如下手动计算?

1 m/°F        = x m/°C 
1 m/Δ°F       = x m/Δ°C 
1 m/(9/5 Δ°C) = x m/Δ°C 
5/9 m/Δ°C     = x m/Δ°C 
5/9 m/Δ°C     = 5/9 m/Δ°C  

1 m/°F -> 5/9 m/°C   

一个额外的复杂性是我正在创建一个函数将值从一个单位转换为另一个单位,因此转换例如从 °F 到 °C 应该仍然适用于设置。

python temperature unit-conversion pint
1个回答
0
投票

您对实际想要的单位使用了错误的字符串表示形式。

>>> quantity(1, ureg.parse_expression("m/Δ°F"))
<Quantity(1, 'meter / delta_degree_Fahrenheit')>
© www.soinside.com 2019 - 2024. All rights reserved.