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(); } }
原文:https://blog.csdn.net/hello_word2/article/details/81808827