Python - количество значащих цифр в результатах деления - PullRequest
3 голосов
/ 01 апреля 2010

Новичок здесь. У меня есть следующий код:

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 ]

6 голосов
/ 01 апреля 2010

Точность определяется оборудованием. Python использует аппаратные числа с плавающей точкой (фактически удваивается). Последствия обсуждаются в руководстве: http://docs.python.org/tutorial/floatingpoint.html

Если вы хотите лучше контролировать точность и округление, вам следует рассмотреть возможность использования модуля десятичный .

0 голосов
/ 01 апреля 2010

Как правило, если документация отсутствует на python.org, она не является официальной. Если вы посмотрите на print , он скажет вам, что числа с плавающей запятой сначала преобразуются в строки, а float скажет вам (как Томас отметил ), что машинная машина double type - это то, как хранятся числа с плавающей точкой, и что язык не дает никаких гарантий относительно значащих цифр.

...