如何在Python中显示百分比

这是我的代码:

print str(float(1/3))+'%' 

它显示:

 0.0% 

但我想得到33%

我能做什么。

format是自Python 2.6以来的一个内置的:

 >>> print "{0:.0f}%".format(1./3 * 100) 33% 

如果你不想整数除法,你可以从__future__导入Python3的分割:

 >>> 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()格式的方法,有一种更方便的“百分比”格式选项:

 >>> '{:.1%}'.format(1/3.0) '33.3%' 

你正在分割整数,然后转换为浮动。 而不是用花车来划分。

作为奖励,使用这里描述的真棒string格式化方法: 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%' 

一个伟大的gem!

只是为了完整性,因为我注意到没有人提出这个简单的方法:

 >>> print "%.0f%%" % (100 * 1.0/3) 33% 

细节:

  • %.0f代表“ 打印0位小数的浮点数 ”,所以%.2f将打印33.33
  • %%打印一个文字% 。 比原来的+'%'
  • 1.0而不是1照顾强迫分裂浮动,所以没有更多的0.0

那么你会想这样做:

 print str(int(1.0/3.0*100))+'%' 

.0它们表示为浮点数, int()它们再次舍入为整数。

怎么样这样的事情:

 print str( round( float(1.0/3.0) * 100 ) )[:2] + '%' 

该[:2]位将从结果中切除.0。