[英]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.