Go 中的浮點除法
儘管除法看起來很簡單,但在Go 中實現此操作可能會遇到意想不到的結果。如提供的範例所示:
fmt.Println(3/10)
此程式碼片段令人驚訝地產生「0」而不是預期的「0.3」。要理解這種行為,深入研究 Go 類型系統的複雜性至關重要。
在 Go 中,除法運算子的運算元是無型別常數,這表示它們的資料型別沒有明確指定。根據Go規範,當處理無類型常數的二元運算時,結果的資料類型由所涉及類型的優先順序決定。在這種情況下,兩個操作數都是整數,從而產生一個值為“0”的無類型整數表達式。
要得到浮點常數結果,其中一個運算元必須明確鍵入為浮點數。以下是一些示範這一點的範例:
3.0 / 10.0 3.0 / 10 3 / 10.0
在這些表達式中,浮點常數(例如「3.0」)確保結果也是值為「0.3」的浮點常數".
或者,如果一個運算元是類型化變量,則以類型化變數的資料型別為準。值並產生“0.3”:
var i3 = 3 var i10 = 10 fmt.Println(float64(i3) / 10) fmt.Println(3 / float64(i10))
以上是為什麼 Go 的整數除法結果是 0 而不是浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!