鱼C论坛

 找回密码
 立即注册
查看: 2250|回复: 18

哪位大佬帮帮我,这个为什么是0009.900000而不是000000009.9?

[复制链接]
发表于 2021-11-15 19:55:36 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 风百默 于 2021-11-15 21:17 编辑

>>>print("%011f"%(9.9))
0009.900000

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 19:58:21 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-11-15 19:59 编辑

print("%.11f"%9.9)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 20:25:58 | 显示全部楼层

不能理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 20:27:26 | 显示全部楼层

你这不应该是9.90000000000吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 20:29:50 | 显示全部楼层
风百默 发表于 2021-11-15 20:27
你这不应该是9.90000000000吗?

我少打了个%号,应该是"%011f"%(9.9)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 20:38:27 | 显示全部楼层
风百默 发表于 2021-11-15 20:29
我少打了个%号,应该是"%011f"%(9.9)


print("%011.1f"%9.9)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 20:42:21 | 显示全部楼层
print("%011.1f"%9.9)

点前面011. 表示 小数点前面至少11位(如不足以 0 替代)
点后面.1 表示 小数点后面至少 1 位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 20:59:20 | 显示全部楼层
傻眼貓咪 发表于 2021-11-15 20:42
print("%011.1f"%9.9)

点前面的 011. 表示 小数点前面至少11位(如不足以 0 替代)

你确定你讲的对?011不应该表示,指定数据项输出的最小宽度为11,不足左边补0,.1表示为指定小数位数为一位。这是书上写的。而且你这回答的跟我的问题都不一样,麻烦你看清楚点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 21:09:29 | 显示全部楼层
风百默 发表于 2021-11-15 20:59
你确定你讲的对?011不应该表示,指定数据项输出的最小宽度为11,不足左边补0,.1表示为指定小数位数为一 ...

抱歉,如果你已经是大佬,就不必故意发问这些简单问题来测试我们这些小弟。
你是想说我语法错误,还是表达错误?我语法表达错误在这里万分表达歉意,如果你觉得我的解答不满意,不用勉强设为最佳解答,请你另请高明指点你这位大神吧,非常抱歉!我眼瞎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 21:12:36 | 显示全部楼层
我的解答是针对 3 楼的你的问题(麻烦看清楚)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 21:16:17 From FishC Mobile | 显示全部楼层
本帖最后由 hrpzcf 于 2021-11-15 21:19 编辑

%011f表示总宽度11字符包括小数点,不足11位以0补齐,f前面没.x表示默认6为小数。
下次发求助帖就行,不用悬赏1鱼币。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 21:37:49 | 显示全部楼层
hrpzcf 发表于 2021-11-15 21:16
%011f表示总宽度11字符包括小数点,不足11位以0补齐,f前面没.x表示默认6为小数。
下次发求助帖就行,不用 ...

抱歉,我刚刚的话太激了,我刚刚没有理解到位,你讲的是对的。对不起。但我还是想问为什么会是0009.900000?难道补0,是小数的话,小数点后面必须六位吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 21:42:43 | 显示全部楼层
hrpzcf 发表于 2021-11-15 21:16
%011f表示总宽度11字符包括小数点,不足11位以0补齐,f前面没.x表示默认6为小数。
下次发求助帖就行,不用 ...

那如果是%06的话是往前面补0,还是后面补0?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 21:50:24 From FishC Mobile | 显示全部楼层
风百默 发表于 2021-11-15 21:42
那如果是%06的话是往前面补0,还是后面补0?


首先要满足.xf的小数位数。比如07.6f要首先要满足.6f即6位小数,这时候如果整个字符串字符数还小于7个,就用0补足,大于7就不补。到底往哪边补,要看对齐方式,左对齐就往右补,右对齐就往左补,没写对齐方式符号默认右对齐。
像你说的06f,f前面没.号,就默认.6,即06.6f,剩下的就是上面说的规则了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 22:12:27 From FishC Mobile | 显示全部楼层
好的,谢谢,我懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-15 22:13:57 | 显示全部楼层
hrpzcf 发表于 2021-11-15 21:50
首先要满足.xf的小数位数。比如07.6f要首先要满足.6f即6位小数,这时候如果整个字符串字符数还小于7个 ...

好的,谢谢我懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-16 20:46:26 | 显示全部楼层
默认六位的精度
  1. >>> print("%f"%(9.9))
  2. 9.900000
复制代码


这才是调整精度
  1. >>> print("%.9f"%(9.9))
  2. 9.900000000
复制代码


这样把精度调为1位就是你想要的结果:
  1. >>> print("%011.1f"%(9.9))
  2. 000000009.9
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-17 10:00:07 | 显示全部楼层
傻眼貓咪 发表于 2021-11-15 21:09
抱歉,如果你已经是大佬,就不必故意发问这些简单问题来测试我们这些小弟。
你是想说我语法错误,还是表 ...

心疼,抚摸狗头
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 17:20:15 | 显示全部楼层
根据python官方文档注释,浮点格式化,小数点后的数码位数由精度决定,默认为 6。
  1. print("%011f"%(9.9))
复制代码

总长度11位,包含小数点,所以输出小数位补0为6位,前补0为4位
参考官方文档:https://docs.python.org/zh-cn/3/ ... e-string-formatting
微信图片_20211122171805.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 05:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表