Java 浮點數問題

浮點數,BigDecimal

浮點數

電腦目前以IEEE-754為標準,由於要將小數表示為二進位,在顯示某些小數會有除不盡的問題,

以Java來說使用BigDecimal來處理這方面的問題。

public static void main(String[] args) {
	
	double a = 1;
	double b = 0.9;
	double c = 0.8;
	double d = 0.7;
	System.out.println(a-b);//0.09999999999999998
	System.out.println(a-c);//0.19999999999999996
	System.out.println(a-d);//0.30000000000000004
}

 

BigDecimal

public static void main(String[] args) {
	BigDecimal a = new BigDecimal(0.1);
	System.out.println(a);//0.1000000000000000055511151231257827021181583404541015625
	
	BigDecimal b = new BigDecimal("100.00");
	BigDecimal c = new BigDecimal("100");
	
	System.out.println(b.equals(c));//false
	System.out.println(b.compareTo(c));//0
}

Reference: