簡體   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