1

使用python-pint,假设我有一个定义为

<Quantity(1.0, 'gram * kilopascal / joule')>

这相当于kilogram/m3。现在,当我尝试使用它时,to_base_units我得到:

den.to_base_units()
<Quantity(1000.0, 'gram / meter ** 3')>

这很好,除了我希望幅度仍然是 1,而单位是,而是,<Quantity(1.0, 'kilogram / meter ** 3')>为了用户友好的目的。有没有办法做到这一点?

顺便说一句,在我的程序中,许多不同的单位都会发生这种情况,并且没有(简单的)方法可以知道将其转换为正确的单位,这使我无法使用convert_to方法。例如,在这种情况下,它应该从1000 gramto更改kilogram,但在下一种情况下,它可以是 from 0.001 meterto1 milimeter等等。

我知道品脱 0.7(我仍在使用 0.6)有一个新的系统选项,但我也无法解决它。

干杯

4

1 回答 1

1

首先,克在品脱 0.8.1 中不再被视为基本单位。相反,品脱将千克视为根据 SI 标准的基本单位:

>>> x = 0.1*ureg['g kpascal / J']
>>> print(x.to_base_units())
0.1 kilogram / meter ** 3

其次,我认为您可能混淆了两件事,即获得基本单位的数量,以及获得方便的前缀。to_base_units()不是要获得一个方便的前缀,而是要根据基本单位(SI 系统中的 m、s、kg、A、K、mol 和 cd)获得数量。如果您想要一个方便的前缀,您可能需要考虑to_compact()

>>> print(x.to_base_units().to_compact())
100.0 gram / meter ** 3
于 2018-11-15T09:00:07.517 回答