2 回答

TA貢獻1831條經(jīng)驗 獲得超9個贊
很簡單,該表達式(5/9)
被評估為(int(5)/int(9))
equals 0
。嘗試(5./9)
為了弄清楚為什么會發(fā)生這種情況,它處理了確定表達式變量類型的順序。
我猜想b / c的(5/9)
存在不考慮input
上述情況2和4,編譯器將它們解釋為,int
并簡單地將表達式替換為0,這時零被認為取決于輸入,因此float64
在最終之前采用類型匯編。
一般來說,Go不會為您轉(zhuǎn)換數(shù)字類型,因此這是唯一對我有意義的解釋。

TA貢獻1860條經(jīng)驗 獲得超8個贊
在圍棋語言規(guī)格說明float32
和float64
簽署浮動遵循IEEE-754標準的數(shù)字。以下是引自維基百科的文字-簽名為零:
IEEE 754浮點算術(shù)標準(目前大多數(shù)支持浮點數(shù)的計算機和編程語言都在使用)要求+0和?0。零可被視為擴展實數(shù)線的變體,因此1 / ?0 =-∞和1 / + 0 = +∞,僅對±0 /±0和±∞/±∞未定義以零除。
顯然,input
當afloat64
加上負32時,它變成另一個float64
為負數(shù)。5/9
評估為0
。負數(shù)float64
計時0
為-0
。
有趣的是,如果您將input
整數(shù)替換為,例如1
,則會得到0
而不是-0
。似乎在Go中,浮點數(shù)同時具有+0
和-0
,而整數(shù)則沒有。
編輯: PhiLho在注釋中解釋了為什么整數(shù)不具有浮點數(shù)的原因:標準化的浮點數(shù)具有+ 0,-0,NaN,+ Infinity和-Infinity的特殊表示形式,而您無法保留一些位組合整數(shù)具有這樣的含義。
- 2 回答
- 0 關(guān)注
- 273 瀏覽
添加回答
舉報