public class DoubleTest {
//保留兩位小數第三位如果大於4會進一位(四舍五入)
double f = 6.23556;
/**
*使用精確小數BigDecimal
*/
public void fun1() {
BigDecimal bg = new BigDecimal(f);
/**
* 參數:
newScale - 要返回的 BigDecimal 值的標度。
roundingMode - 要應用的舍入模式。
返回:
一個 BigDecimal,其標度為指定值,其非標度值可以通過此 BigDecimal 的非標度值乘以或除以十的適當次冪來確定。
*/
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
/**
* DecimalFormat轉換最簡便
*/
public void fun2() {
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
}
/**
* String.format打印最簡便
*/
public void fun3() {
System.out.println(String.format("%.2f", f));
}
/**
*使用NumberFormat
*/ public void fun4() {
NumberFormat nf = NumberFormat.getNumberInstance();
/**
* setMaximumFractionDigits(int newValue)
設置數的小數部分所允許的最大位數。
*/
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(f));
}
public static void main(String[] args) {
DoubleTest dt = new DoubleTest();
dt.fun1();
dt.fun2();
dt.fun3();
dt.fun4();
}
}
輸出結果: