2010-04-01 10 views
3

新手在这里。我有以下代码:Python - 除法结果中显着位数

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位有效数字,但在我的结果中似乎不是这种情况。

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

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

在此先感谢您的时间和耐心。

回答

0

一般来说,如果文档不在python.org上,它不是权威的。如果你看看print它会告诉你浮点数首先转换为字符串,并且float会告诉你(如Thomas noted)机器原生double类型是如何存储浮点数以及语言对有效数字不作任何保证。

+0

Ahhh ...所以,因为print将float转换为字符串,并且根据Thomas提供的教程链接,str()“Python的内置str()函数只产生12个有效数字......”,这是wny行 打印VoltsPerADC 打印myVolts 输出数字与12位数字。我是否正确理解这部分内容? 为什么“格式”语句打印不同数量的数字? 再次感谢。这非常有帮助。 – russ 2010-04-01 11:22:06

+0

我认为你可能会混淆“有效位数”和“浮点表示”的数学/科学概念(你没有受到本教程中术语混淆的帮助)。我期望str()的12位数字在舍入舍入错误和可读性之间取得平衡。如果您正在管理“数学”有效数字,请使用格式进行控制。 str(0.1)可能比一个有意义的长度更具实用便利性。有关详细信息,另请参阅http://docs.sun.com/source/806-3568/ncg_goldberg.html。 – msw 2010-04-01 11:46:06