繁体   English   中英

在浮动上使用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()的第一个参数format()x format()替换,而最里面的括号将被format()的第二个参数替换,即y 在此, x表示要显示的浮点数,y表示小数点后的有效数字。 在此处查看大量示例和文档

如果仍然不清楚,我将首先将其分解为单一格式操作,以更好地理解:

>>> print ("{}".format(x))
100.1205

现在我们要做的就是将小数点后的所有有效数字都修剪掉,然后:

>>> print ("{:.0f}".format(x))
100

或修剪掉除一个以外的所有内容:

>>> print ("{:.1f}".format(x))
100.1

format()添加另一个参数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”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM