В настоящее время я использую Pint для обработки единиц измерения и единиц измерения. Это, кажется, работает хорошо для единиц, которые уже определены в Пинта, напримерКак определить и использовать процент в Pint
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> Q = ureg.Quantity
>>> a = Q(5, 'm/s')
>>> a
<Quantity(5, 'meter/second')>
>>> a.to('ft/s')
<Quantity(16.404199475065617, 'foot/second')>
Я пытался define my own units, которые представляют собой процент. Что касается конверсии единиц, процентный показатель просто равен 100 раз безразмерной фракции, как я ее определял.
>>> ureg.define('percent = dimensionless * 100 = pct')
>>> a = Q(5, 'pct')
>>> a
<Quantity(5, 'percent')>
Однако я не могу показаться, чтобы преобразовать назад и вперед между фракцией ('dimensionless'
) и 'pct'
.
>>> a.to('dimensionless')
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
a.to('dimensionless')
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\quantity.py", line 263, in to
magnitude = self._convert_magnitude_not_inplace(other, *contexts, **ctx_kwargs)
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\quantity.py", line 231, in _convert_magnitude_not_inplace
return self._REGISTRY.convert(self._magnitude, self._units, other)
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\unit.py", line 1026, in convert
return self._convert(value, src, dst, inplace)
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\unit.py", line 1042, in _convert
src_dim = self._get_dimensionality(src)
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\unit.py", line 813, in _get_dimensionality
self._get_dimensionality_recurse(input_units, 1.0, accumulator)
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\unit.py", line 837, in _get_dimensionality_recurse
self._get_dimensionality_recurse(reg.reference, exp2, accumulator)
File "C:\Python35\python-3.5.1.amd64\lib\site-packages\pint\unit.py", line 835, in _get_dimensionality_recurse
reg = self._units[self.get_name(key)]
KeyError: ''
То, что я хотел бы сделать, это преобразовать между, например, «0,73» и «73%». Как я могу определить и использовать такую единицу?
Я использовал 'от pint.converters импорта ScaleConverter' – nowox
По пинты 0,8 это кажется, они удалили 'pint.unit.ScaleConverter', хотя' pint.converters.ScaleConverter' по-прежнему доступен, поэтому остальная часть решения остается в силе. – CoryKramer