我正在嘗試在 Go 中執行一個簡單的除法。fmt.Println(3/10)這將打印 0 而不是 0.3。這有點奇怪。有人可以分享這背后的原因嗎?我想在 Go 中執行不同的算術運算。
2 回答
紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
該表達式3 / 10是一個無類型的常量表達式。規范 說這是關于常量表達式
如果二元運算的操作數是不同種類的無類型常量,則運算和(對于非布爾運算)結果使用此列表后面出現的種類:整數、符文、浮點數、復數。
因為3和10是無類型整數常量,所以表達式的值是一個無類型整數(0在這種情況下)。
操作數之一必須是浮點常量,結果為浮點常量。以下表達式計算為無類型浮點常量0.3:
3.0 / 10.0
3.0 / 10
3 / 10.0
也可以使用類型化常量。以下表達式計算為float64常量0.3:
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
打印上述任何表達式都會打印0.3. 例如,fmt.Println(3.0 / 10)打印0.3.
明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
正如@Cerise和根據規范所提到的
算術運算符應用于數值并產生與第一個操作數相同類型的結果。
在這種情況下,只有第一個操作數需要是浮點數。
fmt.Println(3.0/10)
fmt.Println(float64(3)/10)
// 0.3 0.3
- 2 回答
- 0 關注
- 226 瀏覽
添加回答
舉報
0/150
提交
取消
