哪位大佬帮帮我,这个为什么是0009.900000而不是000000009.9?
本帖最后由 风百默 于 2021-11-15 21:17 编辑>>>print("%011f"%(9.9))
0009.900000 本帖最后由 傻眼貓咪 于 2021-11-15 19:59 编辑
print("%.11f"%9.9) 傻眼貓咪 发表于 2021-11-15 19:58
print("%.11f"%9.9)
不能理解 风百默 发表于 2021-11-15 20:25
不能理解
你这不应该是9.90000000000吗? 风百默 发表于 2021-11-15 20:27
你这不应该是9.90000000000吗?
我少打了个%号,应该是"%011f"%(9.9) 风百默 发表于 2021-11-15 20:29
我少打了个%号,应该是"%011f"%(9.9)
print("%011.1f"%9.9) print("%011.1f"%9.9)
点前面的 011. 表示 小数点前面至少11位(如不足以 0 替代)
点后面的 .1 表示 小数点后面至少 1 位 傻眼貓咪 发表于 2021-11-15 20:42
print("%011.1f"%9.9)
点前面的 011. 表示 小数点前面至少11位(如不足以 0 替代)
你确定你讲的对?011不应该表示,指定数据项输出的最小宽度为11,不足左边补0,.1表示为指定小数位数为一位。这是书上写的。而且你这回答的跟我的问题都不一样,麻烦你看清楚点。 风百默 发表于 2021-11-15 20:59
你确定你讲的对?011不应该表示,指定数据项输出的最小宽度为11,不足左边补0,.1表示为指定小数位数为一 ...
抱歉,如果你已经是大佬,就不必故意发问这些简单问题来测试我们这些小弟。
你是想说我语法错误,还是表达错误?我语法表达错误在这里万分表达歉意,如果你觉得我的解答不满意,不用勉强设为最佳解答,请你另请高明指点你这位大神吧,非常抱歉!我眼瞎 我的解答是针对 3 楼的你的问题(麻烦看清楚) 本帖最后由 hrpzcf 于 2021-11-15 21:19 编辑
%011f表示总宽度11字符包括小数点,不足11位以0补齐,f前面没.x表示默认6为小数。
下次发求助帖就行,不用悬赏1鱼币。 hrpzcf 发表于 2021-11-15 21:16
%011f表示总宽度11字符包括小数点,不足11位以0补齐,f前面没.x表示默认6为小数。
下次发求助帖就行,不用 ...
抱歉,我刚刚的话太激了,我刚刚没有理解到位,你讲的是对的。对不起。但我还是想问为什么会是0009.900000?难道补0,是小数的话,小数点后面必须六位吗? hrpzcf 发表于 2021-11-15 21:16
%011f表示总宽度11字符包括小数点,不足11位以0补齐,f前面没.x表示默认6为小数。
下次发求助帖就行,不用 ...
那如果是%06的话是往前面补0,还是后面补0? 风百默 发表于 2021-11-15 21:42
那如果是%06的话是往前面补0,还是后面补0?
首先要满足.xf的小数位数。比如07.6f要首先要满足.6f即6位小数,这时候如果整个字符串字符数还小于7个,就用0补足,大于7就不补。到底往哪边补,要看对齐方式,左对齐就往右补,右对齐就往左补,没写对齐方式符号默认右对齐。
像你说的06f,f前面没.号,就默认.6,即06.6f,剩下的就是上面说的规则了。 好的,谢谢,我懂了 hrpzcf 发表于 2021-11-15 21:50
首先要满足.xf的小数位数。比如07.6f要首先要满足.6f即6位小数,这时候如果整个字符串字符数还小于7个 ...
好的,谢谢我懂了 默认六位的精度
>>> print("%f"%(9.9))
9.900000
这才是调整精度
>>> print("%.9f"%(9.9))
9.900000000
这样把精度调为1位就是你想要的结果:
>>> print("%011.1f"%(9.9))
000000009.9
傻眼貓咪 发表于 2021-11-15 21:09
抱歉,如果你已经是大佬,就不必故意发问这些简单问题来测试我们这些小弟。
你是想说我语法错误,还是表 ...
心疼,抚摸狗头{:10_276:} 根据python官方文档注释,浮点格式化,小数点后的数码位数由精度决定,默认为 6。
print("%011f"%(9.9))
总长度11位,包含小数点,所以输出小数位补0为6位,前补0为4位
参考官方文档:https://docs.python.org/zh-cn/3/library/stdtypes.html#printf-style-string-formatting
页:
[1]