Java的BigDecimal的保留小数位的实例
代码
public static void main(String[] args) {
Double d1 = 1233.555;
/*
* 这里有个坑,new BigDecimal的时候参数不要传Double类型,要转成String类型
* 参数Double类型:实际bd=1233.555000000000063664629124104976654052734375
* 参数String类型:实际bd=1233.555
*/
BigDecimal bd = new BigDecimal(d1.toString());
System.out.println(bd);
// 进1
System.out.println("进1:" + bd.setScale(2, BigDecimal.ROUND_UP).toString());
// 退1
System.out.println("退1:" + bd.setScale(2, BigDecimal.ROUND_DOWN).toString());
// >=.5进1
System.out.println(">=.5进1:" + bd.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
// >.5进1
System.out.println(">.5进1:" + bd.setScale(2, BigDecimal.ROUND_HALF_DOWN).toString());
// 进1截取:正数则ROUND_UP,负数则ROUND_DOWN
System.out.println("进1截取:" + bd.setScale(2, BigDecimal.ROUND_CEILING).toString());
// 退1截取:正数则ROUND_DOWN,负数则ROUND_UP
System.out.println("退1截取:" + bd.setScale(2, BigDecimal.ROUND_FLOOR).toString());
}
结果打印
1233.555
进1:1233.56
退1:1233.55
>=.5入:1233.56
>.5入:1233.55
进1截取:1233.56
退1截取:1233.55