java中BigDecimal的幾種舍入模式

一、ROUND_UPci

舍入遠離零的舍入模式。it

在丟棄非零部分以前始終增長數字(始終對非零捨棄部分前面的數字加1)。io

注意,此舍入模式始終不會減小計算值的大小。請求

二、ROUND_DOWNim

接近零的舍入模式。數字

在丟棄某部分以前始終不增長數字(從不對捨棄部分前面的數字加1,即截短)。錯誤

注意,此舍入模式始終不會增長計算值的大小。

三、ROUND_CEILING

接近正無窮大的舍入模式。

若是 BigDecimal 爲正,則舍入行爲與 ROUND_UP 相同;

若是爲負,則舍入行爲與 ROUND_DOWN 相同。

注意,此舍入模式始終不會減小計算值。

四、ROUND_FLOOR

接近負無窮大的舍入模式。

若是 BigDecimal 爲正,則舍入行爲與 ROUND_DOWN 相同;

若是爲負,則舍入行爲與 ROUND_UP 相同。

注意,此舍入模式始終不會增長計算值。

五、ROUND_HALF_UP

向「最接近的」數字舍入,若是與兩個相鄰數字的距離相等,則爲向上舍入的舍入模式。

若是捨棄部分 >= 0.5,則舍入行爲與 ROUND_UP 相同;不然舍入行爲與 ROUND_DOWN 相同。

注意,這是咱們大多數人在小學時就學過的舍入模式(四捨五入)。

六、ROUND_HALF_DOWN

向「最接近的」數字舍入,若是與兩個相鄰數字的距離相等,則爲上舍入的舍入模式。

若是捨棄部分 > 0.5,則舍入行爲與 ROUND_UP 相同;不然舍入行爲與 ROUND_DOWN 相同(五舍六入)。

七、ROUND_HALF_EVEN

向「最接近的」數字舍入,若是與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。

若是捨棄部分左邊的數字爲奇數,則舍入行爲與 ROUND_HALF_UP 相同;

若是爲偶數,則舍入行爲與 ROUND_HALF_DOWN 相同。

注意,在重複進行一系列計算時,此舍入模式能夠將累加錯誤減到最小。

此舍入模式也稱爲「銀行家舍入法」,主要在美國使用。四捨六入,五分兩種狀況。

若是前一位爲奇數,則入位,不然捨去。

如下例子爲保留小數點1位,那麼這種舍入方式下的結果。

1.15>1.2 1.25>1.2

八、ROUND_UNNECESSARY

斷言請求的操做具備精確的結果,所以不須要舍入。

若是對得到精確結果的操做指定此舍入模式,則拋出ArithmeticException。

相關文章
相關標籤/搜索