你用Python输出一个浮点数,满心期待看到65.45,结果屏幕上赫然显示:
65.450000
后面跟了四个零,跟狗皮膏药一样甩都甩不掉。
你说我就想保留两位小数,怎么就这么难?
其实一点都不难,只是你还没掌握占位符的精度控制。今天就把这个知识点一次讲透——看起来复杂,但99%的场景你只需要记住一个写法就够了。

上篇文章我们学了三种占位符:%s(字符串)、%f(浮点数)、%d(整数)。
这三种占位符,都可以在%和字母之间插入一个m.n的格式,来控制输出的宽度和精度。
%m.ns → m=宽度, n=精度
%m.nf → m=宽度, n=精度
%m.nd → m=宽度
看起来有点绕?别急,我们一个一个拆开说。
先说字符串。假设有个变量name = "张三",用%s输出就是"张三",两个字符。
m的作用:设置最小宽度。
如果你写%4s,意思是"这个位置至少占4个字符宽"。但"张三"只有2个字符,不够怎么办?Python自动用空格补齐:
python
print("我叫%4s" % "张三") # 输出:我叫 张三(前面补了2个空格)
如果m比字符串本身还小呢?比如%1s?那m就自动失效,原样输出"张三"。毕竟人家自己就两位,你设个最小宽度1,没有意义。
m还有个隐藏规则:正数右对齐,负数左对齐。
python
print("我叫%4s" % "张三") # 右对齐:我叫 张三
print("叫%-4s" % "张三") # 左对齐:叫张三
正4,空格补在左边,文字靠右。负4,空格补在右边,文字靠左。就像Word里的对齐方式一样。
n的作用:最多输出n个字符。
如果你写%.1s,意思是"只展示1个字符":
python
print("我叫%.1s" % "张三") # 输出:我叫张(只留了一个字)
注意,写n的时候前面一定要带那个点.1。不写点就变成了m,意思完全不同。
如果n比字符串长度大呢?比如"张三"只有2个字,你写%.3s?n自动失效,还是输出"张三"。n只截断不补齐——少了不补,多了才砍。
m和n可以一起用:
python
print("我叫%4.1s" % "张三") # 先取1个字"张",再补3个空格 → " 张"
Python的处理顺序是:先砍精度,再补宽度。先把"张三"砍成"张",再把"张"补到4位宽。
字符串的精度控制说实话用得不多。真正高频使用的是浮点数的精度控制。
还记得前面那个65.450000的问题吗?这就是因为%f默认保留6位小数。
n的作用:控制小数点后保留几位。
python
weight = 65.45
print("体重%f" % weight) # 默认6位:65.450000
print("体重%.1f" % weight) # 保留1位:65.5(四舍五入)
print("体重%.2f" % weight) # 保留2位:65.45
print("体重%.3f" % weight) # 保留3位:65.450(不够补零)
看到规律了吗?
这就是解决"一堆零"问题的核心武器。
你以后看到任何浮点数输出带一堆零,直接在%和f之间加个.n就完事了。想保留几位就写几。
实际开发中最常用的就是这个:%.1f或%.2f。
保留1位小数用%.1f,保留2位用%.2f。仅此而已。其他的什么宽度控制、字符串精度,基本用不到。
整数没有小数点,所以不存在精度控制的问题。%d只支持m(宽度控制):
python
age = 12
print("年龄%d" % age) # 正常输出:年龄12
print("年龄%4d" % age) # 最小宽度4:年龄 12(补2个空格)
print("年龄%-4d" % age) # 左对齐:年龄12
规则和字符串的m一模一样:正数右对齐补空格,负数左对齐补空格。
占位符 | m(宽度) | n(精度) | 备注 |
%s 字符串 | 最小宽度,不够补空格 | 最多输出n个字符 | m正=右对齐,m负=左对齐 |
%f 浮点数 | 最小宽度,不够补空格 | 小数点后保留n位 | n默认6;超了补0,短了四舍五入 |
%d 整数 | 最小宽度,不够补空格 | 不支持 | 整数没有小数位 |
核心记忆点:
上面说了这么多,看着是不是有点头晕?
别怕。视频最后老师说了大实话:实际开发中,99%的场景你只需要记住%.nf这一个写法。
其他的什么%4s、%-4d、%4.1s,基本碰不到。就算碰到了,翻回来看这张表就行,不用背。
这就好比你学开车,驾校教了你坡道起步、侧方停车、曲线行驶一大堆。但日常开车,你用的最多的就是踩油门和踩刹车。精度控制也一样,花里胡哨的规则一大堆,真正天天用的就那一个。
Python占位符精度控制,核心就三句话:
1. 浮点数默认6位小数,用%.nf控制位数。 这是最常用的,记住这一个就够了。
2. m控制宽度,n控制精度。 m不够补空格,n对浮点数能补零能四舍五入。
3. 写n一定要带点。 .1是精度,1是宽度,差一个点意思完全不同。
下次再看到65.450000,别慌,加个.1变成%.1f,输出干干净净的65.5。
觉得有帮助的话,点个关注,后续持续分享Python入门干货,用大白话讲透每一个知识点。
更新时间:2026-07-09
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302035593号