Вы можете использовать XRegExp , расширенную, расширяемую кросс-браузерную реализацию регулярных выражений, включая поддержку дополнительного синтаксиса, флагов и методов:
s
, чтобы совпадение точек со всеми символами ( aka dotall или singleline mode) и x
, для свободного пробега и комментариев (aka extended mode). Как насчет этого?
>>> s = '23.45678'
>>> int(float(s))
23
Или ...
>>> int(Decimal(s))
23
Или ...
>>> int(s.split('.')[0])
23
Я сомневаюсь, что это будет Боюсь, мне гораздо проще. Просто примите его и двигайтесь дальше.
Какое поведение округления вы хотите? Вы 2.67, чтобы перейти в 3 или 2. Если вы хотите использовать округление, попробуйте следующее:
s = '234.67'
i = int(round(float(s)))
В противном случае просто выполните:
s = '234.67'
i = int(float(s))
«Преобразование» имеет смысл только тогда, когда вы переходите от одного типа данных к другому без потери точности. Число, представленное строкой, является float и будет терять точность при принуждении к int.
Вместо этого вы хотите округлить, вероятно (я надеюсь, что цифры не представляют собой валюту, потому что тогда округление получает все сложнее).
round(float('23.45678'))
Выражение int(float(s))
, упомянутое другими, является лучшим, если вы хотите усечь значение. Если вы хотите округлить, используя int(round(float(s))
, если круглый алгоритм соответствует тому, что вы хотите (см. round documentation ), в противном случае вы должны использовать Decimal
и один, если его алгоритмы округления.
>>> s = '23.45678'
>>> int(float(s))
23
>>> int(round(float(s)))
23
>>> s = '23.54678'
>>> int(float(s))
23
>>> int(round(float(s)))
24
Вы не указываете, хотите ли вы округлить или нет ...
round(float("123.789"))
даст вам целочисленное значение, но тип float. Тем не менее, при наборе утинов Python фактический тип обычно не очень уместен. Это также будет округлять значение, которое вы, возможно, не захотите. Замените 'round' на 'int', и вы получите его просто усеченным и фактическим int. Например:
int(float("123.789"))
Но, опять же, фактический «тип» обычно не так важен.
Вы можете использовать:
s = '23.245678'
i = int(float(s))
import decimal
, затем используйте его какdecimal.Decimal(5)
или выполнитеfrom decimal import Decimal
и используйте его какDecimal(5)
. Я всегда забываю. – teewuane 28 April 2015 в 00:42