Длина целого числа в Python - PullRequest
184 голосов
/ 03 февраля 2010

В Python, как найти число цифр в целом числе?

Ответы [ 16 ]

1 голос
/ 13 октября 2016

Это можно сделать для целых чисел быстро, используя:

len(str(abs(1234567890)))

Который получает длину строки абсолютного значения "1234567890"

abs возвращает число БЕЗ любых негативов (только величина числа), str преобразует / преобразовывает его в строку, а len возвращает длину строки этой строки.

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

# Ignore all after decimal place
len(str(abs(0.1234567890)).split(".")[0])

# Ignore just the decimal place
len(str(abs(0.1234567890)))-1

Для дальнейшего использования.

1 голос
/ 17 декабря 2010
def length(i):
  return len(str(i))
1 голос
/ 03 февраля 2010

Предполагая, что вы запрашиваете наибольшее число, которое вы можете сохранить в целом числе, значение зависит от реализации.Я полагаю, что вы не думаете так при использовании Python.В любом случае, довольно большое значение может быть сохранено в «целое число» Python.Помните, что в Python используется утка:

Редактировать: Я дал свой ответ перед разъяснением, что спрашивающий хочет количество цифр.Для этого я согласен с методом, предложенным принятым ответом.Больше нечего добавить!

0 голосов
/ 12 августа 2018

Подсчитать количество цифр без преобразования целого числа в строку:

x=123
x=abs(x)
i = 0
while x >= 10**i:
    i +=1
# i is the number of digits
0 голосов
/ 05 марта 2018

Отформатируйте в научной нотации и вычеркните экспоненту:

int("{:.5e}".format(1000000).split("e")[1]) + 1

Я не знаю о скорости, но это просто.

Обратите внимание на количество значащих цифр после десятичной дроби («5» в «.5e» может быть проблемой, если округлить десятичную часть научной нотации до другой цифры. Я установил ее произвольно большим, но может отражать длину наибольшего числа, о котором вы знаете.

0 голосов
/ 03 февраля 2010
>>> a=12345
>>> a.__str__().__len__()
5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...