это мой код:
print str(float(1/3))+'%'
и оно показывает:
0.0%
но я хочу получить 33%
33%
что я могу сделать.
format поддерживает процент тип точности с плавающей запятой :
format
>>> print "{0:.0%}".format(1./3) 33%
Если вам не нужно целочисленное деление, вы можете импортировать деление Python3 из__future__:
__future__
>>> from __future__ import division >>> 1 / 3 0.3333333333333333 # The above 33% example would could now be written without the explicit # float conversion: >>> print "{0:.0f}%".format(1/3 * 100) 33% # Or even shorter using the format mini language: >>> print "{:.0%}".format(1/3) 33%
Для метода форматирования .format() есть более удобный вариант форматирования в процентах:
.format()
>>> '{:.1%}'.format(1/3.0) '33.3%'
Просто для полноты, поскольку я заметил, что никто не предложил этот простой подход:
>>> print("%.0f%%" % (100 * 1.0/3)) 33%
Детали:
%.0f
%.2f
33.33
%%
%
+'%'
1.0
1
0.0
Вы делите целые числа, а затем конвертируете в число с плавающей точкой. Вместо этого делите на поплавки.
В качестве бонуса используйте удивительные методы форматирования строк, описанные здесь: http://docs.python.org/library/string.html#format-specification-mini-language
Чтобы указать процент преобразования и точность.
>>> float(1) / float(3) [Out] 0.33333333333333331 >>> 1.0/3.0 [Out] 0.33333333333333331 >>> '{0:.0%}'.format(1.0/3.0) # use string formatting to specify precision [Out] '33%' >>> '{percent:.2%}'.format(percent=1.0/3.0) [Out] '33.33%'
Великолепная жемчужина!
Тогда вы захотите сделать это вместо:
print str(int(1.0/3.0*100))+'%'
.0 обозначает их как числа с плавающей точкой, а int() снова округляет их до целых чисел.
.0
int()
Вот как я это сделал:
п = 1,0 / 3
print '% .0f'% (100 * n) + r '%'
[Вывод] 33%
Просто поставь вот так:
print '%.2f%%' % 24.689 # Double percentage sign
Как насчет этого:
print str( round( float(1.0/3.0) * 100 ) )[:2] + '%'
Этот бит [: 2] отрежет 0 от результата.