第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么這兩個 float64 有不同的值?

為什么這兩個 float64 有不同的值?

Go
BIG陽 2021-09-10 17:30:42
考慮以下兩種情況:fmt.Println(912 * 0.01)fmt.Println(float64(912) * 0.01)(去游樂場鏈接)第二個打印 9.120000000000001,這實際上很好,我明白為什么會這樣。但是,為什么第一行打印 9.12,最后沒有 …01?Go 是否將兩個無類型常量相乘并在編譯時簡單地將它們替換為 9.12 文字?
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

根據(jù)規(guī)格:

常量表達式總是精確求值;中間值和常量本身可能需要比語言中任何預(yù)先聲明的類型支持的精度大得多的精度。

自從

912 * 0.01

是一個常量表達式,它被精確地計算。因此,寫作fmt.Println(912 * 0.01)與寫作具有相同的效果fmt.Println(9.12)。當您固定912到 時float64,浮點乘法的另一個操作數(shù)也隱式固定到float64。因此,表達式的float64(912) * 0.01行為類似于float64(912) * float64(0.01)。0.01 在 a 中不能完全表示float64,因此精度在與第一個示例float64(912 * 0.01)中的參數(shù)中出現(xiàn)的表達式不同的地方丟失fmt.Println(),解釋了不同的結(jié)果。


查看完整回答
反對 回復(fù) 2021-09-10
?
當年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

輸出不同的原因是在第一種情況下912 * 0.01是任意精度的2個無類型常量值的乘法,并且只有float64在將值傳遞給時才將結(jié)果轉(zhuǎn)換為Println()

在第二種情況下,float64(912) * 0.01首先912轉(zhuǎn)換為float64,然后將無類型常量0.01轉(zhuǎn)換為float64并且這兩個值float64相乘,這不是任意精度,并且不會給出確切的結(jié)果。

筆記:

在第一種情況下,結(jié)果將float64在傳遞給 時轉(zhuǎn)換為Println()

fmt.Printf("%T?%v\n",?912?*?0.01,?912?*?0.01)

輸出:

float64?9.12


查看完整回答
反對 回復(fù) 2021-09-10
  • 2 回答
  • 0 關(guān)注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號