You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何正确输出保留两位小数的百分比格式?

解决Python百分比格式输出的问题

嘿,作为Python初学者遇到这种格式问题太正常啦,我来帮你捋清楚问题出在哪!

核心问题:重复放大了数值

你代码里的问题出在格式化规则的理解上:Python的"{:.2%}"格式说明符会自动帮你完成「乘以100 + 添加百分号」的操作,但你已经手动在计算m_perc和f_perc的时候乘以100了,相当于把数值放大了两次,所以才会出现5000.00%这种奇怪的结果。

举个例子:如果男生有50人,总人数100人,你手动计算后得到50/100*100=50,然后用"{:.2%}"格式化时,Python会把50再乘以100,变成5000,再加上%,就成了5000.00%。

两种解决办法

办法一:去掉手动乘以100的操作(推荐)

直接用原始的小数比例去格式化,让"{:.2%}"帮你完成乘100和加%的步骤:

class_males = float(input('Please enter the number of male students registered:'))
class_females = float(input('Please enter the number of female students registered:'))
class_total = class_males + class_females  # 这里不用转int,保持float更准确
m_perc = class_males / class_total  # 直接计算比例,不乘100
f_perc = class_females / class_total

male_perc = "{:.2%}".format(m_perc)
female_perc = "{:.2%}".format(f_perc)

print('Percentage of males registered:', male_perc)
print('Percentage of females registered:', female_perc)

办法二:保留手动乘100,改用普通小数格式加%

如果你习惯先把数值转成百分比的数字(比如50代表50%),那可以用"{:.2f}%"来格式化,这样只会保留两位小数,然后手动加上%:

class_males = float(input('Please enter the number of male students registered:'))
class_females = float(input('Please enter the number of female students registered:'))
class_total = int(class_males) + int(class_females)
m_perc = int(class_males)/int(class_total)* 100
f_perc = int(class_females)/int(class_total)* 100

male_perc = "{:.2f}%".format(m_perc)  # 这里用.f而不是.%
female_perc = "{:.2f}%".format(f_perc)

print('Percentage of males registered:', male_perc)
print('Percentage of females registered:', female_perc)

补充说明:关于int类型的问题

你之前用int类型得到了正确数字但无法保留两位小数,是因为int()会直接截断小数部分,丢失精度。比如如果输入的是带小数的数值(当然实际人数是整数,但计算比例时用float能保留更准确的小数),转成int就会丢失小数位,导致比例计算有误差。建议尽量用float来计算,或者如果确定输入是整数,转int也没问题,但用上面的格式化方法就能轻松保留两位小数啦。

内容的提问来源于stack exchange,提问作者Wisroix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 15:39:05