簡體   English   中英

在不改變幅度的情況下簡化品脫單位

[英]Simplifying units in pint without changing the magnitude

使用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 gram變為kilogram ,但在下一種情況下,它可以從0.001 meter1 milimeter ,依此類推。

我知道品脫0.7(我還在使用0.6)有一個新的系統選項,但我也無法解決它。

干杯

首先,在品脫0.8.1中,克不再被視為基本單位。 相反,Pint將千克作為基本單位處理,符合SI標准:

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

其次,我認為你可能混淆了兩件事,以基本單位獲得數量,並獲得方便的前綴。 to_base_units()不是關於獲得方便的前綴,而是關於以SI 單位 (SI,s,kg,A,K,mol和cd在SI系統中)獲得數量。 如果你想要一個方便的前綴,你可能想要考慮to_compact()

>>> print(x.to_base_units().to_compact())
100.0 gram / meter ** 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM