BigDecimal bd = new BigDecimal("12.1");
long l = bd.setScale( 0, BigDecimal.ROUND_UP ).longValue(); // 向上取整
long l = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整
* 對于正數(shù)而言,ROUND_UP = ROUND_CEILING,ROUND_DOWN = ROUND_FLOOR
各個roundingMode詳解如下:
ROUND_UP:非0時,舍棄小數(shù)后(整數(shù)部分)加1,比如12.49結果為13,-12.49結果為 -13
ROUND_DOWN:直接舍棄小數(shù)
ROUND_CEILING:如果 BigDecimal 是正的,則做 ROUND_UP 操作;如果為負,則做 ROUND_DOWN 操作 (一句話:取附近較大的整數(shù))
ROUND_FLOOR: 如果 BigDecimal 是正的,則做 ROUND_DOWN 操作;如果為負,則做 ROUND_UP 操作(一句話:取附近較小的整數(shù))
ROUND_HALF_UP:四舍五入(取更近的整數(shù))
ROUND_HALF_DOWN:跟ROUND_HALF_UP 差別僅在于0.5時會向下取整
ROUND_HALF_EVEN:取最近的偶數(shù)
ROUND_UNNECESSARY:不需要取整,如果存在小數(shù)位,就拋ArithmeticException 異常