IEEE 754 浮點數的四種捨入方式

2021-06-23 05:31:27 字數 830 閱讀 9708

四種捨入方向:

向最接近的可表示的值;當有兩個最接近的可表示的值時首選「偶數」值;向負無窮大(向下);向正無窮大(向上)以及向0(截斷)。

說明:預設模式是最近捨入(round to nearest),它與四捨五入只有一點不同,對.5的捨入上,採用取偶數的方式。舉例比較如下: 例2:

最近捨入模式:round(0.5) = 0; round(1.5) = 2; round(2.5) = 2; 四捨五入模式:round(0.5) = 1; round(1.5) = 2; round(2.5) = 3;

主要理由:由於字長有限,浮點數能夠精確表示的數是有限的,因而也是離散的。在兩個可以精確表示的相鄰浮點數之間,必定存在無窮多實數是ieee浮點數所無法精確表示的。如何用浮點數表示這些數,ieee 754的方法是用距離該實數最近的浮點數來近似表示。至於中間值為什麼取偶數而不是奇數,大師knuth有乙個例子說明偶數更好,於是一錘定音。

最近捨入模式在c/c++中沒有相應的函式,當然,ieee754以及x86 fpu的預設捨入模式是最近捨入,也就是每次浮點計算結果都採用最近捨入模式,除非用程式顯式設定為其它三種捨入模式。 另外三種捨入模式,簡要說明。

向0(截斷)捨入:c/c++的型別轉換。(int) 1.324 = 1,(int) -1.324 = -1;

向負無窮大(向下)捨入:c/c++函式floor()。例如:floor(1.324) = 1,floor(-1.324) = -2。

向正無窮大(向上)捨入:c/c++函式ceil()。ceil(1.324) = 2。ceil(-1.324) = -1;

後兩種捨入方法據說是為了數值計算中的區間演算法,但很少聽說哪個商業軟體使用區間演算法。

IEEE754浮點數 向偶數捨入

我們大家都知道,浮點數的標準是ieee754。關於ieee754格式這裡不講了,主要是要講一下它的預設捨入方式。因為表示方法限制了浮點數的範圍和精度,所以使用浮點數只能近似地表示實數運算。而此時就不得不考慮捨入的問題了。捨入的原則是找到最接近的匹配值。為此,ieee754定義了四種不同的捨入方式 下...

IEEE 754四種捨入方向

四種捨入方向 向最接近的可表示的值 當有兩個最接近的可表示的值時首選 偶數 值 向負無窮大 向下 向正無窮大 向上 以及向0 截斷 說明 捨入模式也是比較容易引起誤解的地方之一。我們最熟悉的是四捨五入模式,但是,ieee 754標準根本不支援,它的預設模式是最近捨入 round to nearest...

IEEE 754四種捨入方向

四種捨入方向 當有兩個最接近的可表示的值時首選 偶數 值,這與我們常見的 四捨五入 只有一點不同,對.5的捨入上,採用取偶數的方式。如 round 0.5 0 round 1.5 2 round 2.5 2 對比採用四捨五入 round 0.5 1 round 1.5 2 round 2.5 3 之...