У меня есть цифры, например:Как усечь числа?
100.1264
9.09
123
1298.456789
, и я хочу, чтобы усечь это:
100.12
9.09
123
1298.45
Как укоротить эти цифры так, чтобы оставить свою форму?
У меня есть цифры, например:Как усечь числа?
100.1264
9.09
123
1298.456789
, и я хочу, чтобы усечь это:
100.12
9.09
123
1298.45
Как укоротить эти цифры так, чтобы оставить свою форму?
s="""100.1264
9.09
123
343.1
1298.456789"""
print re.sub(r"(?<=\.)(\d{2})\d+",r"\1",s)
Если вход поплавок можно использовать
s=100.1264
print ast.literal_eval(re.sub(r"(?<=\.)(\d{2})\d+",r"\1",str(s)))
Кастинг в строку, регулярное выражение и преобразование назад (с 'literal_eval', не 'float' ?!) кажется неэффективным по сравнению с, например, 'int (s * 100)/100.0' ... – jonrsharpe
@jonrsharpe round (4.1234) дает' 4.0'? – vks
Да, я понял, что вскоре после комментирования. Как указано в другом месте, «math.trunc» также доступен, и дело в том, что кругосветное путешествие по строке кажется странным способом приблизиться к нему. – jonrsharpe
Если у вас есть номера (не строки), вы можете использовать:
import math
math.trunc(x * 100)/100
Например:
>>> import math
>>> x = 100.1264
>>> math.trunc(x * 100)/100
100.12
Вы также можете использовать int
вместо math.trunc
, однако будьте осторожны, что отливки между поплавками и ints могут быть дорогостоящими.
Дополнительный совет: если вы хотите произвольной точности десятичной арифметики, посмотрите на decimal
module.
Что значит «цифры» *? Являются ли они частью строки или номера объектов? Вы хотите, чтобы они * отображались * округлены до 2dp или фактически округлены? И что вы * пробовали до сих пор? Пожалуйста, предоставьте дополнительную информацию. – jonrsharpe
nips вы что-нибудь пробовали? покажите нам, что вы пробовали в качестве кода python. – Ja8zyjits
, пожалуйста, обратитесь к этому ответу, это может вам помочь. [здесь] (http://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points) –