java中類型轉換、運算精度丟失問題

在java中使用浮點型數據進行運算會造成精度丟失,比如

public class Test8 {
	public static void main(String args[]) {
		int i = 2;
		double j = 1.8;
		System.out.println(i-j);
	}
	
}

經過結果會自動類型轉換爲double,但是輸入仍然不是0.2,而是
在這裏插入圖片描述
在java中,一般讓我們使用BigDecimal數據類型來解決這一個問題。

public class Test8 {
	public static void main(String args[]) {
		int i = 2;
		double j = 1.8;
		System.out.println(i-j);
		
		System.out.println("-----------------");
//		Test8.test(i, j);
		System.out.println(Test8.test(i, j));
	}
	public static double test(int i, double j) {
		BigDecimal bigDecimal = new BigDecimal(Integer.toString(i));
		BigDecimal bigDecimal2 = new BigDecimal(Double.toString(j));
		BigDecimal subtract = bigDecimal.subtract(bigDecimal2);//調用BigDecimal裏面的減法運算
		//將BigDecimal類型轉爲Double類型
		return subtract.doubleValue();
	}
}

運行結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章