鱼C论坛

 找回密码
 立即注册
查看: 48|回复: 3

关于字符串精度选项[.precission]语法的一些疑惑

[复制链接]
发表于 昨天 17:29 | 显示全部楼层 |阅读模式
20鱼币
在《零基础入门学习python》(最新版)字符串VI课程上, 说对整数来说,则不允许使用该选项值。下面是我从速查宝典-字符串格式化语法参考这一栏截的图。
说明.png
但是我通过编写发现'f'和'g'这两种类型,format()方法中的参数可以是整数,这是为什么 。下面是运行的代码截图。
疑惑.png
运行代码:
  1. "{:.2f}".format(520)
  2. '520.00'
  3. "{:.2g}".format(520)
  4. '5.2e+02'
复制代码

使用'g'这个类型的时候,语法上说的是:对于以'g'或'G'格式化的浮点数数值来说,是限定小数点前后共显示多少个位数
为什么这个运行结果是
'5.2e+02'

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 17:30 | 显示全部楼层
鱼油的问题解答如下:

关于字符串格式化精度选项的疑惑,核心在于fg类型会自动将整数转为浮点数处理:

1. 当使用f类型(如{:.2f})时:
   - 整数520被隐式转换为520.0
   - 精度.2控制小数点后位数 → 输出520.00

2. 当使用g类型(如{:.2g})时:
   - 同样先转为浮点数520.0
   - 精度.2控制总有效数字位数(非固定小数点)
   - 520有3位有效数字,需用科学计数法压缩为2位 → 输出5.2e+02(即5.2×10^2)

验证整数类型限制(会报错):
  1. >>> "{:.2d}".format(520)
  2. ValueError: Precision not allowed in integer format specifier
复制代码


总结差异:
  • 整数类型(d)禁止精度选项 → 语法错误
  • 浮点类型(f/g)允许精度选项,且会自动转换整数参数


示意图:
整数520 → 浮点520.0 → 按格式转换:

  1. f格式路线:520.0 → 保留2位小数 → "520.00"
  2. g格式路线:520.0 → 保留2位有效数字 → "5.2e+02"
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 23:12 | 显示全部楼层
你这不是加了f和g 了吗
把它们删掉就是小甲鱼说的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 21 分钟前 | 显示全部楼层
再检查一下,这个format似乎存在了f/g参数嘞

e+02 是*10**2的意思,科学计数法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-17 09:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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