python是否可以为工程目的使用基于后缀的数字表示法?

时间:2011-03-19 08:48:18

标签: python numbers notation

作为一名电气工程师,我(我们?)使用python来帮助计算/自动化等等。

当使用一些真实世界的数字处理计算时,以 -nano,-pico,-tera 等方式思考是非常常见的。

例如:我知道1pF电容器是什么,但1e-12 F电容器不太友好。此外,它的输入次数增加了4倍( 1p vs 1e-12 )并且更容易出错。不是说在显示数字时,有后缀数字就更容易了。

所以问题是:是否可以在python中使用它(IPython?):

L = 1n
C = 1p
f = 1/(2*pi*sqrt(L*C))
print(f) gives: 5.033G (or whatever the accuracy should be)

它只是一个计算器也非常有用!

感谢。

更新: 我所寻找的不是单位处理,而只是后缀数字处理。所以不要在乎它是法拉或千克,而是关心后缀(-n,-u,-m,-M,-G ......)

4 个答案:

答案 0 :(得分:3)

不确定。只需编写自己的解析器并使用Python's language services生成自己的AST。

答案 1 :(得分:3)

您可以创建一个包含所有必要单位作为符号的模块,例如units.py,其中包含类似

的内容
pico = 1*e-12
nano = 1*e-9
micro = 1*e-6
mili = 1*e-3 

Farad = 1

pF = pico*Farad
nF = nano*Farad

然后在代码中,Farads中的50pF是

units
50*units.pF

答案 2 :(得分:1)

在语言中引入复杂性没有多大意义,可以通过适当的命名和功能简单地解决这些问题:

L_nano = unit_nano(1)
C_pico = unit_pico(1)
f = 1/(2*pi*sqrt(L*C))

print(to_Giga(f)) gives: 5.033G 

答案 3 :(得分:1)

pyparsing附带的示例包括一个名为fourFn.py的简单表达式解析器。我修改它以接受带有大约8行附加代码的后缀文字,找到它here。此更改支持standard suffixes,但1e1的“da”除外,因为我仅限于使用单个字符,而是使用“D”代替。

如果您想将其变为交互式计算器,则可以使用我对fourFn.py所做的相同更改来调整Steven Siew's submission