回答
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%
'float(1)'比'1'更真pythonic吗? – 2013-07-17 07:58:49
@TobiasKienzler,我不知道,如果它更pythonic。至少这是你在阅读代码时偶然发现的东西。我认为用Python 3和* real * division默认情况下,这种刺激消失了。 – miku 2013-07-17 08:19:09
确实。我想知道为什么Guido从一开始就没有实现真正的分割......将1/3舍入到0应该是[explicit](http://www.python.org/dev/peps/pep-0020/“Explicit is “)毕竟...... – 2013-07-17 08:53:30
怎么是这样的:
print str(round(float(1.0/3.0) * 100) )[:2] + '%'
这[2]位将切下的结果.0。
已更新,以移除列表理解并调用round() – JeremyFromEarth 2011-03-15 02:22:29
回滚您的编辑 - round()比int()更合适 - 例如,考虑2.0/3.0。和列表理解,列表理解是什么? – GreenMatt 2011-03-15 02:31:31
也许我使用了错误的术语,但是我认为[:2]被认为是列表理解,不是吗? – JeremyFromEarth 2011-03-15 02:34:57
您将整数然后转换为浮动。取而代之的是花车。
作为奖励,使用这里描述的真棒字符串格式化方法: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()
之后他们再次轮为整数。
我知道这是来自2011年,但是...... int()不轮。例如'int(1.9)!= 2'。舍入可以像这样完成 - 'round(1.9,0)== 2' – owns 2016-04-26 18:12:16
'int()'肯定会舍入数字。我的例子正是我所要做的;切断数字,因为这是OP想要的。 – 2016-04-27 07:33:11
Stockoverflow是伟大的 - 几年,仍然是一个回应。谢谢。但是,为了完整起见,我想澄清一下。 'int()'丢弃数字。它并没有缩小。舍入意味着它对数字进行了一些操作。尽管最终的结果是一样的;从这个意义上说,我明白你的观点。此外,OP没有说明他/她想要做什么33.333 ...的数字是33回合。感谢您回复我的评论,祝您有美好的一天! – owns 2016-04-30 15:43:46
只是为了完整起见,因为我发现没有人提出这种简单的方法:
>>> print "%.0f%%" % (100 * 1.0/3)
33%
详情:
%.0f
代表“打印与0位小数一个浮动” ,所以%.2f
将打印33.33
%%
打印文字%
。有一点比你原来的+'%'
1.0
而不是1
照顾强迫师的浮动清洁,所以没有更多的0.0
备注:100.0 * 1/3 - > ok,100.0 *(1/3) - > 0.0不好 – mpgn 2015-02-13 23:05:54
@martialdidit:我意识到这一点,这就是为什么我的答案在* 1/3没有括号'。评估顺序是故意的:'100.0 * 1/3 => 100.0/3 => 0.33 ...' – MestreLion 2015-02-14 16:08:16
无论如何,我已经将强制从'100'移到了'1',以便说清楚。 – MestreLion 2015-02-14 16:13:55
有一种方法更方便“percent'格式化为.format()
格式方法的选择:
>>> '{:.1%}'.format(1/3.0)
'33.3%'
有没有办法做到这一点与旧学校''%.1f“'格式? – 2015-03-17 23:28:25
有点“不太方便”,但是,是的!像上面建议的那样'print(“%。1f %%”%(100 * 1.0/3))' – Sebastian 2015-03-17 23:32:46
呵呵,所以没有。没有实际的%格式类型。 – 2015-03-18 18:00:26
只要把这样的:
print '%.2f%%' % 24.689 # Double percentage sign
- 1. Python:显示操作的百分比
- 2. 如何在Python中显示数组的百分比
- 3. 百分比显示问题
- 4. 显示和百分比
- 5. 在ggplot中显示百分比酒吧
- 6. 在饼图上显示百分比值
- 7. 在标签中显示百分比
- 8. python的百分比
- 9. 显示百分比但在图表中没有百分比叹息
- 10. 如何在Python中的直方图中显示百分比标签
- 11. 如何在侧面文本框中显示百分比(%)叹息
- 12. 图表 - OOo basic:如何在PieChart中显示百分比
- 13. 如何在Epplus饼图中显示带小数的百分比?
- 14. 如何显示在引导pregress栏的中间百分比
- 15. 如何在AngularJS中显示百分比文字进度条?
- 16. 如何在magento中显示售罄百分比
- 17. 如何显示在jqplot图表,而不是百分比
- 18. 如何在饼图中显示百分比和值obiee11g
- 19. 如何在asp.net中显示上传百分比
- 20. 如何在dropzone.js中显示上传进度百分比
- 21. 如何在Highcharts中显示Bar的剩余百分比?
- 22. 无法正确显示百分比
- 23. 显示零值的变量百分比
- 24. 显示百分比使用D3 JS
- 25. D3 y轴百分比显示
- 26. excel显示小数百分比?
- 27. 以百分比显示y轴?
- 28. 显示PHP脚本完成百分比
- 29. 显示百分比值(highcharts)气泡图
- 30. 使用Ajax显示php的百分比
int/int = int,int/float = float,flaot/int = float – AbiusX 2011-03-15 02:18:27
_Percent_表示_per hundred_。如果你有一个简单的比例(在你的情况下是'1/3'),你必须有一个_per_的值,它必须乘以'100'来得到一个_percent_的值。看到整数和浮点数的区别的其他答案。 – Apalala 2011-03-16 14:08:34