Python f-string妙用:90%的人只用了1%的功能
目录一、f-string 基础二、保留小数点后指定位数2.1 基本用法2.2 自动舍入与精度三、结合宽度与对齐3.1 指定最小宽度3.2 对齐方式3.3 填充字符四、千位分隔符五、显示正负号六、百分比格式七、科学计数法八、保留小数点但截断不四舍五入九、在表达式中使用十、与其他格式化方式的对比十一、实战案例11.1 商品价格表11.2 科学数据展示11.3 百分比进度十二、注意事项十三、总结在数据展示、报表生成、科学计算等场景中我们经常需要控制浮点数的显示精度。Python 3.6 引入的 f-string格式化字符串字面量提供了一种简洁、高效的方式。本文将详细介绍如何使用 f-string 保留小数点位数以及更多格式化技巧。一、f-string 基础f-string 是在字符串前加上 f 或 F 前缀并在花括号 {} 中嵌入变量或表达式同时支持格式说明符。python name Alice score 95.5 print(f{name} 的分数是 {score}) # Alice 的分数是 95.5如果需要控制小数位数可以在表达式后添加格式说明符 : 和格式规则。二、保留小数点后指定位数2.1 基本用法:.nf最常用的格式是 :.nf其中 n表示保留的小数位数f表示固定小数点表示法。python pi 3.1415926535 print(f{pi:.2f}) # 3.14 print(f{pi:.4f}) # 3.1416如果实际小数位数不足会用 0 补齐。如果超出会进行四舍五入。python value 5 print(f{value:.2f}) # 5.002.2 自动舍入与精度:.nf 遵循银行家舍入法但日常使用可视为四舍五入。python print(f{2.675:.2f}) # 2.67注意由于浮点表示实际可能为2.67 print(f{2.685:.2f}) # 2.69如果需要更精确的控制可使用 decimal 模块。三、结合宽度与对齐有时我们不仅需要控制小数位数还需要指定总宽度和对齐方式以便对齐输出。3.1 指定最小宽度格式为 :宽度.精度f。python numbers [12.3, 456.789, 7.0] for n in numbers: print(f{n:10.2f}) # 总宽度10保留2位小数 #输出 12.30 456.79 7.003.2 对齐方式 左对齐默认数值右对齐字符串左对齐 右对齐^ 居中对齐python print(f{3.14159:10.2f}) # 3.14 左对齐 print(f{3.14159:10.2f}) # 3.14右对齐 print(f{3.14159:^10.2f}) # 3.14 居中3.3 填充字符可以指定填充字符默认为空格放在对齐符之前。python print(f{3.14:010.2f}) # 0000003.14 print(f{3.14:*^10.2f}) # ***3.14***四、千位分隔符对于大数字添加千位分隔符能提高可读性。使用 , 或 _python amount 1234567.89 print(f{amount:,.2f}) # 1,234,567.89 print(f{amount:_.2f}) # 1_234_567.89可以结合宽度、对齐等使用。五、显示正负号默认负数带 -正数不带符号。使用 强制显示正号。使用空格在正数前留一个空格便于对齐。python positive 3.14 negative -2.71 print(f{positive:.2f}) # 3.14 print(f{negative:.2f}) # -2.71 print(f{positive: .2f}) # 3.14正数前留空格六、百分比格式将小数转换为百分比显示使用 % 格式符。它会自动将数值乘以100并添加 % 符号并可指定小数位数。python ratio 0.857 print(f{ratio:.1%}) # 85.7% print(f{ratio:.2%}) # 85.70%七、科学计数法使用 e 或 E 显示科学计数法。python num 0.00012345 print(f{num:.2e}) # 1.23e-04 print(f{num:.2E}) # 1.23E-04同样可以指定宽度、对齐等。八、保留小数点但截断不四舍五入f-string 的 :.nf 是四舍五入的。如果需要直接截断不进行四舍五入可以借助 math.floor 或字符串操作但更推荐使用decimal模块。python import math value 3.14159 truncated math.floor(value * 100) / 100 # 3.14 print(f{truncated:.2f}) # 3.14九、在表达式中使用f-string 支持在花括号内执行表达式因此可以直接在格式化时进行计算。python total 100 count 3 print(f平均值: {total / count:.2f}) # 平均值: 33.33也可以调用函数。python def format_currency(amount): return f${amount:,.2f} price 1234.5 print(f价格: {format_currency(price)}) # 价格: $1,234.50十、与其他格式化方式的对比%格式化%.2f % pi 旧式可读性差不推荐str.format() {:.2f}.format(pi) 功能强大但稍显冗长f-string f{pi:.2f}最简洁性能最好Python 3.6f-string 在可读性和性能上都优于前两者是 Python 3.6 之后的首选。十一、实战案例11.1 商品价格表python products [ (苹果, 5.99), (香蕉, 3.50), (橙子, 4.25) ] print(商品 单价) for name, price in products: print(f{name:6}{price:7.2f}) # 输出 商品 单价 苹果 5.99 香蕉 3.50 橙子 4.2511.2 科学数据展示python values [0.001234, 12345.6789, -0.0000567] for v in values: print(f{v:12.4e} 原始值: {v})11.3 百分比进度python completed 123 total 500 percent completed / total print(f进度: {percent:.1%} ({completed}/{total})) # 进度: 24.6% (123/500)十二、注意事项1. 性能f-string 在编译时被转换为高效的 FORMAT_VALUE操作码比format() 和%更快。2. 兼容性仅支持 Python 3.6若需兼容旧版本使用 str.format()。3. 浮点精度浮点数本身存在精度问题格式化只是显示层面的处理。需要精确计算时应使用 decimal.。4. 表达式复杂度虽然支持表达式但保持简洁更利于阅读。十三、总结保留2位小数 f{num:.2f}宽度10右对齐保留2位 f{num:10.2f}千位分隔符f{num:,.2f}百分比 f{ratio:.1%}科学计数法 f{num:.2e}显示正号 f{num:.2f}f-string 是 Python 中最优雅、最高效的字符串格式化方式。掌握它能让你的代码更简洁输出更美观。希望本文能帮助你在实际开发中灵活运用 f-string 处理小数格式化。如果觉得有收获欢迎点赞、收藏、关注哦。