我目前正在使用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倍,我就是这样定义它的。在
^{pr2}$但是我似乎不能在分数('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%”之间进行转换。我如何定义和使用这样的单位?在
GitHub问题hgrecco/pint#185似乎涵盖了您所描述的情况。在
我可以使用
Pint-0.7.2
使用该问题中讨论的解决方法:输出:
^{pr2}$我也遇到了同样的问题,想出了一个简单的解决办法,似乎效果很好。在
输出:
^{pr2}$(注意最后一行有轻微的舍入错误。)
我从默认的units dictionary得到语法,其中基本单位的定义如下
相关问题 更多 >
编程相关推荐