1 回答

TA貢獻1829條經(jīng)驗 獲得超13個贊
IEEE?-754 標(biāo)準(zhǔn)定義了 Go 用于浮點數(shù)的浮點算法,例如float32
and?float64
(就像幾乎所有其他語言一樣)。
由于您的有效數(shù)字可能高達 52 位,顯然它只能使用一個float64
值來表示。
雙精度浮點格式float64
中描述了值的內(nèi)存布局(位)。
這是一個值的位圖float64
(取自維基百科):
你聲稱你有指數(shù)值和尾數(shù)(這是小數(shù)部分)。
您可以使用簡單的按位運算來構(gòu)造浮點的 64 位值,如下所示:
bits?:=?exp<<52?|?sig
(注意:exp
并且sig
應(yīng)該是類型uint64
。如果不是,請使用類型轉(zhuǎn)換。)
一旦你有了這些位,你就可以使用math.Float64frombits()
函數(shù)將它作為一個float64
值來獲?。?/p>
f?:=?math.Float64frombits(bits)
請注意,內(nèi)存布局的指數(shù)值不是您在計算數(shù)字值時必須使用的“直接”數(shù)字,而是:
雙精度二進制浮點數(shù)指數(shù)采用偏移二進制表示法編碼,零偏移為1023;在 IEEE 754 標(biāo)準(zhǔn)中也稱為指數(shù)偏差。
因此,以上述雙精度格式編碼的數(shù)字計算如下:
(-1)符號x 2?e-1023?x 1.分數(shù)
- 1 回答
- 0 關(guān)注
- 146 瀏覽
添加回答
舉報