python 中的字符串占位符精度控制

精度控制是字符串格式化中的重要功能,主要用于控制浮点数的小数位数字符串的截断长度等。不同格式化方式的精度控制语法略有不同。

一、精度控制

格式化方式 浮点数精度 字符串截断 示例
% 格式化 %.2f %.3s "%.2f" % 3.14159
str.format() {:.2f} {:.3} "{:.2f}".format(3.14159)
f-string {value:.2f} {value:.3} f"{pi:.2f}"

二、% 格式化的精度控制

1. 浮点数精度

复制代码
# 基本用法
pi = 3.141592653589793

print("%.0f" % pi)   # 3(0 位小数)
print("%.1f" % pi)   # 3.1
print("%.2f" % pi)   # 3.14
print("%.4f" % pi)   # 3.1416(四舍五入)
print("%.10f" % pi)  # 3.1415926536

# 结合宽度
print("%8.2f" % pi)   # '    3.14'
print("%08.2f" % pi)  # '00003.14'

# 科学计数法精度
print("%.2e" % pi)    # 3.14e+00
print("%.4e" % pi)    # 3.1416e+00

2. 字符串截断

复制代码
text = "Hello World"

# 截断字符串(保留前 n 个字符)
print("%.3s" % text)   # Hel
print("%.5s" % text)   # Hello
print("%.10s" % text)  # Hello Worl

# 结合宽度
print("%10.3s" % text) # '       Hel'(右对齐,宽度10)
print("%-10.3s" % text)# 'Hel       '(左对齐)

3. 整数精度(补零)

复制代码
# 整数的精度实际上是宽度补零
print("%.5d" % 42)     # 00042
print("%.8d" % 123)    # 00000123
print("%.0d" % 42)     # 42(不补零)

三、str.format() 的精度控制

1. 浮点数精度

复制代码
pi = 3.141592653589793

# 基本用法
print("{:.0f}".format(pi))   # 3
print("{:.1f}".format(pi))   # 3.1
print("{:.2f}".format(pi))   # 3.14
print("{:.4f}".format(pi))   # 3.1416
print("{:.10f}".format(pi))  # 3.1415926536

# 结合宽度
print("{:8.2f}".format(pi))   # '    3.14'
print("{:08.2f}".format(pi))  # '00003.14'

# 科学计数法
print("{:.2e}".format(pi))    # 3.14e+00
print("{:.4e}".format(pi))    # 3.1416e+00

# 百分比(精度控制)
ratio = 0.875
print("{:.0%}".format(ratio))   # 88%
print("{:.1%}".format(ratio))   # 87.5%
print("{:.2%}".format(ratio))   # 87.50%

2. 字符串截断

复制代码
text = "Hello World"

# 截断字符串
print("{:.3}".format(text))   # Hel
print("{:.5}".format(text))   # Hello
print("{:.8}".format(text))   # Hello Wo
print("{:.0}".format(text))   # (空字符串)

# 结合对齐
print("{:>10.3}".format(text))  # '       Hel'
print("{:<10.3}".format(text))  # 'Hel       '
print("{:^10.3}".format(text))  # '   Hel    '

3. 整数精度(补零)

复制代码
print("{:.5d}".format(42))     # 00042
print("{:.8d}".format(123))    # 00000123

# 可以省略 d
print("{:.5}".format(42))      # 00042(自动识别类型)

四、f-string 的精度控制

1. 浮点数精度

复制代码
pi = 3.141592653589793

# 基本用法
print(f"{pi:.0f}")   # 3
print(f"{pi:.1f}")   # 3.1
print(f"{pi:.2f}")   # 3.14
print(f"{pi:.4f}")   # 3.1416

# 结合宽度
print(f"{pi:8.2f}")   # '    3.14'
print(f"{pi:08.2f}")  # '00003.14'

# 科学计数法
print(f"{pi:.2e}")    # 3.14e+00

# 百分比
ratio = 0.875
print(f"{ratio:.0%}")   # 88%
print(f"{ratio:.1%}")   # 87.5%

# 使用变量作为精度(动态精度)
precision = 3
print(f"{pi:.{precision}f}")  # 3.142(动态精度)

2. 字符串截断

复制代码
text = "Hello World"

print(f"{text:.3}")   # Hel
print(f"{text:.5}")   # Hello
print(f"{text:.8}")   # Hello Wo

# 结合对齐
print(f"{text:>10.3}")   # '       Hel'
print(f"{text:<10.3}")   # 'Hel       '
print(f"{text:^10.3}")   # '   Hel    '

# 动态截断长度
max_len = 5
print(f"{text:.{max_len}}")  # Hello

3. 复杂的精度控制

复制代码
# 货币格式化
price = 123.456
print(f"价格: ¥{price:.2f}")        # 价格: ¥123.46

# 带千分位和精度
num = 1234567.891234
print(f"{num:,.2f}")               # 1,234,567.89
print(f"{num:_.2f}")               # 1_234_567.89

# 正负号 + 精度
print(f"{3.14159:+.2f}")           # +3.14
print(f"{-3.14159:+.2f}")          # -3.14

# 指数形式
print(f"{0.00012345:.2e}")         # 1.23e-04

# 百分比 + 宽度
score = 0.875
print(f"得分: {score:6.1%}")        # 得分:   87.5%
相关推荐
230万光年的思念18 分钟前
分子动力学模拟参考文献
python
HongXu_CaiYi1 小时前
0103-python相关-函数、文件
python
vortex52 小时前
从Conda到UV:Python项目依赖管理的现代演进
python·conda·uv
何以解忧,唯有..2 小时前
Python time 模块详解:时间处理与日期操作指南
开发语言·python
梅雅达编程笔记2 小时前
Day 18 · 综合实战 B:AI 客服 Agent(专栏收官)
python·智能客服·ai agent·意图识别·ai客服·大模型应用·ai办公自动化
测试老哥3 小时前
Pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系
自动化测试·软件测试·python·测试工具·测试用例·pytest·职场发展
Buke..3 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
JacksonMx3 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
W_326003 小时前
Python-OpenCV HSV颜色空间与inRange颜色分割:按颜色提取目标物体
图像处理·人工智能·python·opencv·机器学习
Buke..4 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓