如何在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。