Java的BigDecimal的保留小数位的实例

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

你可能感兴趣的:(Java)