Python - 除法结果中的重要数字位数

时间:2010-04-01 10:56:55

标签: python floating-point format division digits

新手在这里。我有以下代码:

myADC = 128
maxVoltage = 5.0
maxADC = 255.0
VoltsPerADC = maxVoltage/maxADC
myVolts = myADC * VoltsPerADC
print "myADC = {0: >3}".format(myADC)
print "VoltsPerADC =  {0: >7}".format(VoltsPerADC)
print VoltsPerADC
print "myVolts = {0: >7}".format(myVolts)
print myVolts

这输出以下内容:

myADC = 128
VoltsPerADC =  0.0196078
0.0196078431373
myVolts =  2.5098
2.50980392157

我一直在寻找有关如何确定有效位数的说明,但是找不到对我有意义的解释。此链接link text表示默认情况下,“print”语句将数字打印到10位有效数字,但在我的结果中似乎并非如此。

如何确定有效位数/精度数?

有人可以为我阐明这一点。

提前感谢您的时间和耐心。

2 个答案:

答案 0 :(得分:6)

精度由硬件决定。 Python使用硬件浮点数(实际上是双精度数)用于浮点数。教程中讨论了这些含义:http://docs.python.org/tutorial/floatingpoint.html

如果您想要更好地控制精度和舍入,则应考虑使用decimal模块。

答案 1 :(得分:0)

通常,如果文档不在python.org,则它不具有权威性。如果您查看print,它会告诉您浮点数首先转换为字符串,而float会告诉您(Thomas noted)机器本机double类型是如何存储浮点数,语言不保证有效数字。