java數據處理
在編寫代碼時總是會出現這樣的情況:2.0-1.1=0.8999999999999999。出現這種情況是因爲計算機轉換成二進制時出現的。
public class Test {
@org.junit.Test
public void fun1() {
double a1 = 2.0;
double a2 = 1.1;
double a3 = a1 - a2;
System.out.println(a3);
}
}
怎麼來解決這種情況呢,平時我用保留小數來解決這種情況。DecimalFormat format = new DecimalFormat("#.##");具體代碼實現:
public class Test {
@org.junit.Test
public void fun1() {
DecimalFormat format = new DecimalFormat("#.##");
double a1 = 2.0;
double a2 = 1.1;
double a3 = a1 - a2;
System.out.println(format.format(a3));
}
}
這樣輸出結果便是0.9,但是不好的一點就是,保留多少位小數,得自己預算。今天學習的時候瞭解到一個類:BigDecimal,便很好的解決了這種問題。具體代碼實現:
public void fun2(){
BigDecimal d1 = new BigDecimal("2.0");
BigDecimal d2 = BigDecimal.valueOf(1.1);
double d3 = d1.subtract(d2).doubleValue();
System.out.println(d3);;
}
除此之外,BigDecimal,還可以處理大數據,比如100!。