亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我將 math.NaN() 和 math.MaxFloat64 轉換為 int 時

當我將 math.NaN() 和 math.MaxFloat64 轉換為 int 時

Go
守候你守候我 2022-12-05 16:58:48
package mainimport (    "fmt"    "math")func main() {    x, y := math.NaN(), math.MaxFloat64    fmt.Printf("%d\n", int(x))    fmt.Printf("%d\n", int(y))}那是我的測試代碼片段。當我使用 go1.14.2 運行上面的代碼時,結果是-9223372036854775808-9223372036854775808但是同樣的代碼在go1.17.2中運行,結果是09223372036854775807我搜索了類似的問題:Why Is uint64 of NaN and MaxFloat64 equal in Golang? ,上面說在不同的硬件環境下,math.NaN() 可能不同,但是我在我的 MacOS M1 系統中運行代碼,只是 golang 版本不同。為什么go1.14.2和go1.17.2結果不一樣?
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

規范:轉換:

在涉及浮點數或復數值的所有非常量轉換中,如果結果類型不能表示轉換成功的值,但結果值取決于實現。

您將浮點值轉換NaNint. 類型的有效值int不包括NaN值,因此您轉換的值不能由 type 的值表示int,因此結果取決于實現。基本上,規范允許它從一個版本到另一個版本、從一個平臺到另一個平臺進行更改。您不能(不應該)int為轉換結果假定特定值。


查看完整回答
反對 回復 2022-12-05
  • 1 回答
  • 0 關注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號