回答

5

最常見的浮點格式是IEEE 754標準中規定的二進制浮點格式。我會回答你的問題這些格式。標準的新版本(2008)中也有十進制浮點格式,除IEEE 754標準外,還有其他格式,但754二進制格式是最常見的格式。關於四捨五入的一些信息以及該標準的鏈接均在此Wikipedia page中。

將雙精度轉換爲單精度的處理方式與四捨五入任何操作的結果相同。 (例如,加法,乘法或平方根具有精確的數學值,並且該值根據規則進行四捨五入以產生從操作返回的結果。爲了轉換,輸入值是精確的數學值,並且它是圓整的。)

通常,計算環境具有一些默認舍入模式。 (各種編程語言可能會提供更改默認舍入模式的方法,或者特別針對每個操作來指定它。)默認舍入模式通常是舍入到最近的。其他則是朝向零的方向,朝向正無窮的方向(向上),以及朝向負方向的無窮大(向下)。

在圓到最近的模式中,返回最接近精確值的可表示數。如果存在平局,則返回具有偶數低位(在其分數或有效數中)的數字。爲此,無窮有效地表現爲好像它是有限數字模式中的下一個值。在單精度中,最大有限數是0x1.fffff8p127,0x1.fffffap127,0x1.fffffcp127和0x1.fffffep127。 (單精度有效數中有24位,所以該位的一步是最後一位十六進制數中的一個2)。爲了舍入目的,無窮大就好像它在0x2p128一樣。所以,如果確切的結果更接近0x1.fffffep127(因此,小於0x1.ffffffp127),它將舍入到0x1.fffffep127。如果它大於或等於0x1.ffffffp127,則舍入到無窮大。負無窮的情況是對稱的。

在向無窮大模式中,返回大於或等於精確值的最接近的可表示值。因此,任何高於0x1.fffffep127的值都會循環到無窮大。向負無窮大回歸返回小於或等於確切值的最接近的可表示值。 Round-toward-zero返回最接近零值的可表示值。

IEEE 754標準只規定結果;它沒有指定算法。用於實現舍入的方法取決於每個實現。

+1

上十六進制格式的說明:0X p 代表解釋爲十六進制數字(包括以標記單元的位置的點)和由兩個升高到功率相乘的結果。這可以很容易地看到浮點值的表示形式,並且可以看到諸如0x1.fffffep127是最大可表示的有限值的事實,因爲其有效位中的所有24位都打開並且它具有最大指數127 – 2012-08-02 12:06:13

+0

備註:是十進制數字。 – 2012-08-02 13:11:47