在 Python 中,格式化百分比(百分数)有几种常用方法,以下是详细的说明和示例:

方法 1:使用 format() 函数
通过 format() 函数的格式化字符串,将浮点数转换为百分比形式。
语法
"{:.0%}".format(number) # 不保留小数
"{:.1%}".format(number) # 保留1位小数
"{:.2%}".format(number) # 保留2位小数
示例
number = 0.2536
print("{:.0%}".format(number)) # 输出: 25%
print("{:.1%}".format(number)) # 输出: 25.4%
print("{:.2%}".format(number)) # 输出: 25.36%
方法 2:使用 f-string(Python 3.6+)
推荐使用 f-string,语法更简洁。
语法
f"{number:.0%}" # 不保留小数
f"{number:.1%}" # 保留1位小数
f"{number:.2%}" # 保留2位小数
示例
number = 0.2536
print(f"{number:.0%}") # 输出: 25%
print(f"{number:.1%}") # 输出: 25.4%
print(f"{number:.2%}") # 输出: 25.36%
方法 3:使用 round() + 手动拼接
如果需要更灵活的控制,可以先用 round() 四舍五入,再手动拼接 符号。
示例
number = 0.2536
rounded = round(number * 100, 1) # 保留1位小数
print(f"{rounded}%") # 输出: 25.4%
方法 4:使用 locale 模块(本地化百分比)
如果需要根据不同地区的格式显示百分比(如欧洲使用逗号作为小数点),可以使用 locale 模块。

示例
import locale
# 设置本地化(例如法语)
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
number = 0.2536
formatted = locale.format_string("%.1f%%", number * 100)
print(formatted) # 输出: 25,4%
| 方法 | 适用场景 | 示例 |
|---|---|---|
format() |
兼容 Python 2/3 | "{:.2%}".format(0.2536) → 36% |
| f-string | Python 3.6+(推荐) | f"{0.2536:.2%}" → 36% |
round() + 手动拼接 |
需要额外处理 | round(0.2536 * 100, 1) → 4% |
locale |
本地化格式 | locale.format_string("%.1f%%", 0.2536 * 100) → 25,4% |
推荐使用 f-string,因为它简洁高效,且是 Python 3 的标准写法。
