将十进制转换为百分比

0 投票
4 回答
4484 浏览
提问于 2025-04-18 09:13

我看了这里的帖子:如何在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%'

撰写回答