做java項目的時候可能經常會遇到double類型變量保留小數的問題,下面便把我的經驗做個簡短的總結:
java中double類型變量保留小數問題大體分兩種情況:
(一):小數點後面位數過長,四捨五入保留指定位數:
可以用以下代碼實現:
public class TestDemo {
public static void main(String[] args) {
double a=15.32743859;
double b=Math.round(a*10000)/10000.0000;//保留四位小數
System.out.println(b);
}
}
想保留n位小數,就Math.round(a*10的n次方)/10的n次方.n個0。
(二):如果小數點後末位爲0,myeclipse中不予顯示,如
double a=15.80;
System.out.print(a);
則在控制檯中輸出的結果是15.8。
而我們有時候希望把百分位的0也顯示出來,比如說顯示商品價格,一般是顯示兩位小數,如果商品價格是15.8,也顯示爲15.80,如果商品價格是15,也顯示爲15.00,這種情況,用(一)中的方法便無法實現了,那應該如何實現呢?
請看下面代碼:
import java.text.DecimalFormat;
public class TestDemo {
public static void main(String[] args) {
DecimalFormat df =new DecimalFormat("#####0.00");
double a=15;
System.out.println(df.format(a));
}
}
這樣,即使在我們的double類型變量是15,顯示出來的也是15.00。當然,我們希望顯示多少位就在"#####0.00"的點後面去控制0的個數便可以。如果是"#####0"的話,那我們的double變量無論是15.0或是15.00都能顯示成15,而如果我們的double變量是15.60,則顯示爲16,即這種方法也可以實現四捨五入。它包含了(一)的功能,所以我們遇到兩種情況都可以選擇這種方法。