BigDecimal bd = new BigDecimal("12.1");
long l = bd.setScale( 0, BigDecimal.ROUND_UP ).longValue(); // 向上取整
long l = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整
* 對(duì)于正數(shù)而言愿汰,ROUND_UP = ROUND_CEILING,ROUND_DOWN = ROUND_FLOOR
各個(gè)roundingMode詳解如下:
ROUND_UP:非0時(shí)默勾,舍棄小數(shù)后(整數(shù)部分)加1扰魂,比如12.49結(jié)果為13淤翔,-12.49結(jié)果為 -13
ROUND_DOWN:直接舍棄小數(shù)
ROUND_CEILING:如果 BigDecimal 是正的剔难,則做 ROUND_UP 操作;如果為負(fù)箭养,則做 ROUND_DOWN 操作 (一句話(huà):取附近較大的整數(shù))
ROUND_FLOOR: 如果 BigDecimal 是正的慕嚷,則做 ROUND_DOWN 操作;如果為負(fù)毕泌,則做 ROUND_UP 操作(一句話(huà):取附近較小的整數(shù))
ROUND_HALF_UP:四舍五入(取更近的整數(shù))
ROUND_HALF_DOWN:跟ROUND_HALF_UP 差別僅在于0.5時(shí)會(huì)向下取整
ROUND_HALF_EVEN:取最近的偶數(shù)
ROUND_UNNECESSARY:不需要取整喝检,如果存在小數(shù)位,就拋ArithmeticException 異常