1. 程式人生 > >精度丟失-解決方法(BigDecimal-加減乘除)

精度丟失-解決方法(BigDecimal-加減乘除)

	/**
	 * 精度丟失問題解決方法
	 */
	public static void main(String[] args) {
		double a = 1.0;
		double b = 0.9;
		System.out.println(a - b);
		// 解決精度丟失問題方法如下
		BigDecimal big = new BigDecimal(a + "");
		BigDecimal big2 = new BigDecimal(b + "");
		// 兩個值相加-返回一個BigDecimal物件
		BigDecimal subtract = big.subtract(big2);
		// 將型別轉換為Double型別
		System.out.println(subtract.doubleValue());
		System.out.println("==========================");
		getValue();
	}

	public static void getValue() {
		BigDecimal one = new BigDecimal("5");
		BigDecimal two = new BigDecimal("10");
		// 加法:
		BigDecimal add = one.add(two);
		System.out.println("(加法)10+5=" + add);
		// 減法:
		BigDecimal subtract = two.subtract(one);
		System.out.println("(減法)10-5=" + subtract);
		// 乘法:
		BigDecimal result = one.multiply(two);
		System.out.println("(乘法)10*5=" + result);
		// 除法:
		BigDecimal divide = two.divide(one);
		System.out.println("(除法)10/5=" + divide);
		// 取餘:
		BigDecimal result2 = two.remainder(one);
		System.out.println("(取餘)10%5=" + result2);
	}
輸出結果:
0.09999999999999998
0.1
==========================
(加法)10+5=15
(減法)10-5=5
(乘法)10*5=50
(除法)10/5=2
(取餘)10%5=0