2014-01-28 6 views
1

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

1.234 -> 1.23 

1.2 -> 1.2 

1 -> 1 

2. -> 2 

Какой метод следует использовать? Я могу отформатировать его до 2 десятичных знаков, но не могу придумать быстрый способ сделать это 2 или менее десятичных знаков.

+0

использовать класс Decimal(). http://docs.python.org/2/library/decimal.html –

ответ

7

Я бы рекомендовал использовать функцию round

In [1]: round(1.234, 2) 
Out[1]: 1.23 

In [2]: round(1.2, 2) 
Out[2]: 1.2 

К сожалению, у него есть один недостаток: он будет конвертировать int с до float с (в python2.x Это будет держать их в качестве int с в Python3. .x, хотя):

In [3]: round(1,2) 
Out[3]: 1.0 
+0

Можно найти дополнительную документацию/подробную информацию о вышеуказанном раунде(), если вам нужно [Документация на Python - Арифметика с плавающей точкой: проблемы и ограничения] (http://docs.python.org/2/tutorial/floatingpoint.html#tut-fp-issues) – misterbear

2

Для форматного использования печати:

print "%.2f" % 1.234 # -> 1.23 
print "%.1f" % 1.234 # -> 1.2 
print "%.0f" % 2.  # -> 2 
1

Просто используйте небольшую грубую силу после форматирования до двух мест.

>>> '{:.2f}'.format(1.234).rstrip('0').rstrip('.') 
'1.23' 
>>> '{:.2f}'.format(1.2).rstrip('0').rstrip('.') 
'1.2' 
>>> '{:.2f}'.format(1).rstrip('0').rstrip('.') 
'1' 
>>> '{:.2f}'.format(2.).rstrip('0').rstrip('.') 
'2' 
Смежные вопросы