Python - 除法结果中的有效数字位数

3

新手报到。我有以下代码:

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个回答

6

0
一般来说,如果文档不在 python.org 上,那么它就不是权威的。如果你查看 print,它会告诉你浮点数首先被转换为字符串,而 float 会告诉你(正如 Thomas 指出的)机器本地的 double 类型是浮点数的存储方式,并且语言对有效数字没有任何保证。

啊...所以由于print将浮点数转换为字符串,并且根据Thomas提供的教程链接,str()“Python内置的str()函数仅生成12个有效数字...”,这就是为什么这些行 print VoltsPerADC print myVolts输出带有12位数字的原因。我对此部分的理解正确吗?为什么“,format”语句打印不同数量的数字?再次感谢。这非常有帮助。 - russ
我认为你可能将“有效数字”的数学/科学概念与“浮点表示”混淆了(教程中术语的混淆并没有帮助到你)。我预计“str()的12个数字”被选择是为了在截断舍入误差和可读性之间取得平衡。如果您正在处理“数学”有效数字,请使用格式控制它们。 str(0.1)可能更多地是实际方便而不是有意义的长度。另请参阅http://docs.sun.com/source/806-3568/ncg_goldberg.html以获取更详细的信息。 - msw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接