在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();
}
}
運行結果