我試圖將一個大整數轉換爲32位單精度浮點數,但我無法克服我遇到的這個問題。如果大整數的二進制表示大於23位尾數,該怎麼辦?大整數到單點浮點數
例如,取整數1671277287
它的二進制表示01100011100111011010101011100111
我的理解是,你向左移動小數點的位置,直到只有1位的是像這樣左:
01.100011100111011010101011100111
我的問題是,這個尾數是30位,一個精度浮點只有23位尾數的空間。我試圖尋找這個具體的問題,但我還沒有找到任何東西。我將如何解決這個問題?
編輯:發現了一些信息,以防萬一別人有這個問題。單精度浮點的默認舍入是「舍入到最近,與偶數關係」。另一個StackOverflow發表評論如何輕鬆地做到這一點。
StackOverflow post regarding rounding
您不會錯過任何東西 - 一個32位單精度浮點數具有精度較少顯著數字(6 - 7位十進制數)而不是32位整數,因爲它只有23位尾數。因此,在您的示例中,那些最不重要的位將突出顯示「結束」。 –
請注意,假設IEEE754,由於隱含的前導1,你有24位。但是,這仍然不會產生30位,所以要做到這一點是適當的四捨五入 - 這就是w.r.t. IEEE754舍入模式有效,默認舍入到最近,平均值。 –
@PaulR所以30位尾數「100011100111011010101011100111」就是「10001110011101101010101」,最右邊的7位保持關閉狀態? –