Не позволяйте вопросу, "какой быстрее" быть решающим фактором, которого можно использовать. Возможности, Вы никогда не собираетесь заботиться так очень, и кроме того, время считывания программиста является намного более дорогим, чем машинное время.
Использование, какой бы ни имеет большую часть смысла человеку, читающему код.
Как насчет этого?
>>> 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))
>>> s = '23.45678'
>>> int(float(s))
23
>>> int(round(float(s)))
23
>>> s = '23.54678'
>>> int(float(s))
23
>>> int(round(float(s)))
24
Вы не указываете, нужно ли округлять или нет ...
«Преобразовать» имеет смысл только тогда, когда вы переходите с одного типа данных на другой без потери точности. Число, представленное строкой, является числом с плавающей запятой и потеряет точность при принудительном использовании в int.
Вы, вероятно, захотите вместо этого округлить (я надеюсь, что числа не представляют валюту, потому что тогда округление становится намного сложнее. ).
round(float('23.45678'))
Выражение int (float (s))
, упомянутое другими, является лучшим, если вы хотите усечь значение. Если вам нужно округление, используйте int (round (float (s))
, если алгоритм округления соответствует тому, что вы хотите (см. Документацию round )), в противном случае вы должны использовать Decimal
и один, если его алгоритмы округления.
Вы можете использовать:
s = '23.245678'
i = int(float(s))
round(float("123.789"))
даст вам целочисленное значение, но тип с плавающей точкой. Однако с утиной типизацией Python фактический тип обычно не очень актуален. Это также округлит значение, которое вам может не понадобиться. Замените 'round' на 'int', и вы получите только усеченное значение int. Примерно так:
int(float("123.789"))
Но, опять же, реальный «тип» обычно не так важен.