Подтвердить что ты не робот

Печать номеров в python

У меня есть script, который генерирует некоторые числа (в частности, времена в форме эпохи).

Каждый раз, когда он генерирует число, я добавляю число в массив (называемый VALUES) и печатаю как массив, так и этот номер. Тем не менее, число не содержит столько мест после десятичного числа, сколько числа в массиве.

Например, пример вывода будет выглядеть так (после трех итераций):

VALUES = [733948.45278935181, 733948.45280092594, 733948.45280092594]
Number = 733948.452801

Третье число в массиве соответствует значению в Number.

Почему они содержат различное количество позиций после десятичного числа?

Off-topic: Каковы числа после того, как десятичный знак называется? Я думал, что для них есть какой-то математический термин, я просто не могу вспомнить, что это такое.

Примечание. Код был в python.

4b9b3361

Ответ 1

Когда python выводит число, он иногда печатает больше десятичных знаков на основе того, вызывает ли внутренний метод repr или str (которые оба преобразуют число в строку). repr вернет больше десятичных знаков, а str не будет.

print вызывает str, поэтому, когда вы выполняете print Number, он будет обрезать его немного. Однако, когда вы преобразовываете список чисел в строку, когда вы делаете print VALUES, список будет внутренне использовать repr, указав его в десятичных разрядах.

В целом, в зависимости от того, как он печатается, вы увидите разное количество десятичных знаков. Тем не менее, внутри, это все равно такое же число.

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

print "%.3f" % 3.1415   # prints 3.142

Ответ 2

Когда вы печатаете список, он печатает реестр (x) для каждого x в списке.

Когда вы печатаете номер, он печатает str (x).

Например:

>>> print 123456789.987654321
123456789.988

>>> print [123456789.987654321]
[123456789.98765433]

>>> print str(123456789.987654321)
123456789.988

>>> print repr(123456789.987654321)
123456789.98765433

Ответ 3

Чтобы получить нужную точность, вам нужно что-то вроде:

VALUES = [733948.45278935181, 733948.45280092594, 733948.45280092594]
for v in VALUES:
    print '%18.11f' % (v)

И термин, который я всегда использовал для этих цифр после десятичной точки, - это "эти цифры после десятичной точки".: -)

Ответ 4

Часть числа справа от десятичной точки (или, в более общем случае, осевая точка) называется дробной частью числа (в отличие от целочисленной части). Для десятичной системы это можно назвать десятичной частью. В двоичном коде я видел ту часть числа, которая называется дробными битами.

Время от времени автор будет использовать термин мантисса при обращении к этой части числа, но я считаю, что использование считается неправильным для многих, так как мантисса, по моему опыту, чаще всего используется как синоним значимого и.