将十进制转换为百分比
我看了这里的帖子:如何在Python中显示百分比,并且使用了里面的解决方案。
S = 'ftp'
"{0:.0f}%".format(S.count('f') / 9 * 100)
我想要的输出是11%,但是当我按照指定的格式运行代码时,得到的却是"0%",而不是我想要的11%。如果能给我一些正确的方向,我会非常感激。
4 个回答
0
这是因为在Python 2中,你使用的是整数除法,像3 / 9
这样的计算结果是零。
你可以改用浮点数除法:
"{0:.0f}%".format(S.count('f') / 9.0 * 100)
这样你就能明白为什么这样做有效,下面的记录会给你解释:
>>> 3/9
0
>>> 3/9.0
0.3333333333333333
另外,你也可以调整你的运算顺序,先进行乘法:
"{0:.0f}%".format(S.count('f') * 100 / 9)
0
在Python 3中,这个功能是可以正常工作的,但在Python 2中,要想让除法运算得到浮点数结果,你至少需要有一个浮点数。
你可以在9后面加一个点(.),这样就能把它变成浮点数了。
S = 'ftp'
"{0:.0f}%".format(S.count('f') / 9. * 100)
1
问题不在于格式的写法,而是在于算术运算。你用整数相除,导致 S.count('f') / 9 的结果是 0。把 9 改成 9.0 就可以解决这个问题。
1
如果你想显示一个百分比,直接使用百分比格式化工具就可以了:
>>> '{:.0%}'.format(S.count('f') / 9)
'11%'
正如其他人提到的那样,在Python 2中,如果两个参数都是整数,它会进行整数除法。所以你可以把常量改成浮点数来解决这个问题:
>>> '{:.0%}'.format(S.count('f') / 9.)
'11%'