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