在 float 上使用 f 字符串格式打印 - 无法获取输出的生成方式
print with f-string formatting on float - unable to get how the output is generated
x = 100.1205
y = str(x)[6]
这意味着 y=0
当尝试执行以下代码时,输出为 100。
print ("{:.{}f}".format(x,y))
任何人都可以告诉它如何将 100 作为输出。
首先,让我们给字段编号:格式字符串 '{:.{}f}'
等同于 '{0:.{1}f}'
.
位置1的参数是y
,等于0,所以这等价于'{0:.0f}'
代入。也就是说,它将位置 0 处的参数(即 x
)格式化为浮点数,小数点后 0 位。
所以,结果是 '100'
,因为那是 x
到 0 个小数位。您可以尝试使用 y
的不同值来查看结果:
>>> '{:.{}f}'.format(100.1205, 0)
'100'
>>> '{:.{}f}'.format(100.1205, 1)
'100.1'
>>> '{:.{}f}'.format(100.1205, 2)
'100.12'
>>> '{:.{}f}'.format(100.1205, 3)
'100.121'
>>> '{:.{}f}'.format(100.1205, 4)
'100.1205'
>>> '{:.{}f}'.format(100.1205, 5)
'100.12050'
大括号是从外向内解释的,即最外层的大括号将被替换为 format()
的第一个参数,即 x
,而最内层的大括号将被替换替换为 format()
的第二个参数,即 y
。这里,x
代表要显示的浮点数,y代表小数点后的有效数字。查看大量示例和文档 here
如果还不清楚,我先分解成单一格式操作,以便更好地理解:
>>> print ("{}".format(x))
100.1205
现在我们要做的就是trim去掉小数点后的所有有效数字,然后:
>>> print ("{:.0f}".format(x))
100
或者 trim 除一个以外的所有:
>>> print ("{:.1f}".format(x))
100.1
在format()
中添加另一个参数,即y,然后可以用y的值修改有效数字。
>>> print ("{:.{}f}".format(x,y)
100
x = 100.1205, y = str(x)[6
]。这里 y = 0
首先要了解"{:.{}f}".format(x,y)
。这里我们使用字符串的位置格式。然后我们可以看到x在位置0,y在位置1.
我们可以将 "{:.{}f}"
视为“{value of x:{value of y}f}
”
现在 x 的值为 100,y 的值为 0,所以字符串看起来像
“{100:.{0}f}”。这意味着小数点后有 0 位或没有数字
当 print("{:.{}f}".format(x,y))
执行时将打印“100”
x = 100.1205
y = str(x)[6]
这意味着 y=0
当尝试执行以下代码时,输出为 100。
print ("{:.{}f}".format(x,y))
任何人都可以告诉它如何将 100 作为输出。
首先,让我们给字段编号:格式字符串 '{:.{}f}'
等同于 '{0:.{1}f}'
.
位置1的参数是y
,等于0,所以这等价于'{0:.0f}'
代入。也就是说,它将位置 0 处的参数(即 x
)格式化为浮点数,小数点后 0 位。
所以,结果是 '100'
,因为那是 x
到 0 个小数位。您可以尝试使用 y
的不同值来查看结果:
>>> '{:.{}f}'.format(100.1205, 0)
'100'
>>> '{:.{}f}'.format(100.1205, 1)
'100.1'
>>> '{:.{}f}'.format(100.1205, 2)
'100.12'
>>> '{:.{}f}'.format(100.1205, 3)
'100.121'
>>> '{:.{}f}'.format(100.1205, 4)
'100.1205'
>>> '{:.{}f}'.format(100.1205, 5)
'100.12050'
大括号是从外向内解释的,即最外层的大括号将被替换为 format()
的第一个参数,即 x
,而最内层的大括号将被替换替换为 format()
的第二个参数,即 y
。这里,x
代表要显示的浮点数,y代表小数点后的有效数字。查看大量示例和文档 here
如果还不清楚,我先分解成单一格式操作,以便更好地理解:
>>> print ("{}".format(x))
100.1205
现在我们要做的就是trim去掉小数点后的所有有效数字,然后:
>>> print ("{:.0f}".format(x))
100
或者 trim 除一个以外的所有:
>>> print ("{:.1f}".format(x))
100.1
在format()
中添加另一个参数,即y,然后可以用y的值修改有效数字。
>>> print ("{:.{}f}".format(x,y)
100
x = 100.1205, y = str(x)[6
]。这里 y = 0
首先要了解"{:.{}f}".format(x,y)
。这里我们使用字符串的位置格式。然后我们可以看到x在位置0,y在位置1.
我们可以将 "{:.{}f}"
视为“{value of x:{value of y}f}
”
现在 x 的值为 100,y 的值为 0,所以字符串看起来像 “{100:.{0}f}”。这意味着小数点后有 0 位或没有数字
当 print("{:.{}f}".format(x,y))
执行时将打印“100”