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

3 投票
2 回答
3998 浏览
提问于 2025-04-15 21:07

我是新手,下面是我写的代码:

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

我一直在寻找关于默认情况下如何确定有效数字位数的解释,但找不到让我明白的说法。这个链接 链接文本 提到默认情况下“print”语句会打印出10位有效数字,但在我的结果中似乎并不是这样。

那么,有效数字位数/精度是如何确定的呢?

能不能帮我解释一下这个问题。

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

2 个回答

0

一般来说,如果文档不是在python.org上,那就不算权威。如果你查看print的说明,它会告诉你浮点数在打印之前会先被转换成字符串。而float的说明会告诉你(正如Thomas提到的),浮点数是以机器本地的double类型存储的,并且这个语言并没有保证有效数字的数量。

6

精度是由硬件决定的。Python在处理浮点数时,实际上使用的是硬件的浮点数(实际上是双精度浮点数)。具体的影响可以在这个教程中查看:http://docs.python.org/tutorial/floatingpoint.html

如果你想对精度和四舍五入有更多的控制,可以考虑使用decimal模块。

撰写回答