python - Как преобразовать любую числовую строку в целое число? [Дубликат]

Вы можете использовать XRegExp , расширенную, расширяемую кросс-браузерную реализацию регулярных выражений, включая поддержку дополнительного синтаксиса, флагов и методов:

  • Добавляет новый синтаксис регулярных выражений и замены текста, включая всестороннюю поддержку с именем capture .
  • Добавляет два новых флага регулярных выражений: s , чтобы совпадение точек со всеми символами ( aka dotall или singleline mode) и x , для свободного пробега и комментариев (aka extended mode).
  • Предоставляет набор функций и методов, которые делают сложный регулярный просмотр обработкой ветерок .
  • Автоматически исправляет наиболее часто встречающиеся непоследовательности кросс-браузера в поведении и синтаксисе regex.
  • Позволяет вам легко создавать и использовать плагины, которые добавляют новый синтаксис и флаги к регулярному языку выражения XRegExp.

46
задан Matt Hampel 7 July 2009 в 21:35
поделиться

7 ответов

Как насчет этого?

>>> s = '23.45678'
>>> int(float(s))
23

Или ...

>>> int(Decimal(s))
23

Или ...

>>> int(s.split('.')[0])
23

Я сомневаюсь, что это будет Боюсь, мне гораздо проще. Просто примите его и двигайтесь дальше.

94
ответ дан Paolo Bergantino 17 August 2018 в 12:08
поделиться
  • 1
    Помните import decimal, затем используйте его как decimal.Decimal(5) или выполните from decimal import Decimal и используйте его как Decimal(5). Я всегда забываю. – teewuane 28 April 2015 в 00:42
  • 2
    Следует отметить, что тип округления каждой опции предлагает значение. – Rapnar 11 December 2015 в 15:30

Какое поведение округления вы хотите? Вы 2.67, чтобы перейти в 3 или 2. Если вы хотите использовать округление, попробуйте следующее:

s = '234.67'
i = int(round(float(s)))

В противном случае просто выполните:

s = '234.67'
i = int(float(s))
13
ответ дан Dan Lorenc 17 August 2018 в 12:08
поделиться

«Преобразование» имеет смысл только тогда, когда вы переходите от одного типа данных к другому без потери точности. Число, представленное строкой, является float и будет терять точность при принуждении к int.

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

round(float('23.45678'))
2
ответ дан JosefAssad 17 August 2018 в 12:08
поделиться

Выражение int(float(s)), упомянутое другими, является лучшим, если вы хотите усечь значение. Если вы хотите округлить, используя int(round(float(s)), если круглый алгоритм соответствует тому, что вы хотите (см. round documentation ), в противном случае вы должны использовать Decimal и один, если его алгоритмы округления.

1
ответ дан Kathy Van Stone 17 August 2018 в 12:08
поделиться
>>> s = '23.45678'
>>> int(float(s))
23
>>> int(round(float(s)))
23
>>> s = '23.54678'
>>> int(float(s))
23
>>> int(round(float(s)))
24

Вы не указываете, хотите ли вы округлить или нет ...

3
ответ дан Kevin Little 17 August 2018 в 12:08
поделиться
round(float("123.789"))

даст вам целочисленное значение, но тип float. Тем не менее, при наборе утинов Python фактический тип обычно не очень уместен. Это также будет округлять значение, которое вы, возможно, не захотите. Замените 'round' на 'int', и вы получите его просто усеченным и фактическим int. Например:

int(float("123.789"))

Но, опять же, фактический «тип» обычно не так важен.

0
ответ дан rledley 17 August 2018 в 12:08
поделиться

Вы можете использовать:

s = '23.245678'
i = int(float(s))
1
ответ дан Rostyslav Dzinko 17 August 2018 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: