簡體   English   中英

浮點運算實際上做什么(int)前綴?

[英]What is an (int) prefix on floating point arithmetic actually doing?

在一些示例代碼中,我看到使用了這種語法:

float1 = 7.0
float2 = 2.0
result = (int)(float1/float2)

關鍵似乎是強制結果為整數,但我找不到任何記錄正在使用的(int)語法的地方,或者為什么它更適合int(float1/float2) 對int()本身的調用應該返回零,但是(0)(float1/float2)拋出一個TypeError並且抱怨零不是可調用的。 很明顯,解釋器正在嘗試執行int()引用,但是我不清楚它為什么會在那里找到可調用的東西。

有人能指點我這個語法的一些文檔嗎?

編寫該代碼的人過多地接觸過比C更密切相關的語言而不是Python。 在C,C ++,Java,C#等中, (int)something是將something(int)的語法。 在Python中,它只是一種拼寫int(something)的奇怪方式。 int是內置函數,它將something轉換為int

通常,其他表達式<expr>的Python表達式(<expr>)的計算結果與<expr>相同。 parantheses只能影響優先級,但在這種情況下它們不會。 同樣, <expr>(...)計算<expr>然后調用結果 - 注意<expr>可以再次是任何表達式,它不僅限於簡單的函數名。

(x)(y)x(y)相同。 (int)(y)有效,因為int(y)有效。 (0)(y)不是因為0(y)不起作用。

在這段代碼中: result = (int)(float/float2)

(int)是一個被賦值的表達式,用於返回int函數。 然后使用單個參數調用,表達式為float/float2

它對於(0)不起作用,因為該表達式的結果是一個數字,它不是可調用類型,與TypeError狀態完全相同。

(int)求值為int ,所以

result = (int)(float/float2)

是相同的

result = int(float/float2)

不建議在裸變量名稱周圍放置不必要的括號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM