首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 保留小數位數完整方案:四種核心方法大比拚

     編輯:Java 程式設計入門

場景:double f = 111231.5585; 需保留兩位小數 → 111231.56

方法一:String.format() —— 最簡潔

System.out.println(String.format("%.2f", f)); // 111231.56
// %.2f 解析:% 佔位符、.2 兩位小數、f 浮點數
  • 優點:一行搞定、四捨五入自動處理
  • 缺點:回傳 String,後續運算需再轉型

方法二:DecimalFormat —— 靈活強大

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f)); // 111231.56

// 模式說明:
// #.00   → 兩位小數,整數部不補零
// 0.00   → 兩位小數,整數部不足補零
// #,##0.00 → 含千分位分隔符
  • 優點:支援千分位、科學記號、前後綴、負數格式等豐富模式
  • 缺點:物件建立開銷稍大,高頻呼叫建議重用實例

方法三:BigDecimal —— 精確計算首選

BigDecimal bd = new BigDecimal(String.valueOf(f));
BigDecimal result = bd.setScale(2, RoundingMode.HALF_UP);
System.out.println(result); // 111231.56
  • 優點:避免浮點數精度誤差,金融/財務系統必用
  • 缺點:效能較低,語法較繁瑣

方法四:Math.round() 乘除法 —— 原始手法

double d1 = (double) Math.round(f * 100) / 100; // 111231.56
// 保留 4 位:Math.round(f * 10000) / 10000.0
  • 優點:無額外物件、回傳 double 可直接運算
  • 缺點:大數值可能溢位、需自行處理負數邊界

效能與適用場景對比

方法回傳型別精度效能適用場景
String.formatString四捨五入中單純顯示、日誌輸出
DecimalFormatString四捨五入中複雜格式(千分位、貨幣符號)
BigDecimalBigDecimal精確低金融計算、精度敏感業務
Math.rounddouble四捨五入高高頻運算、非金融數值

Struts 標籤輸出格式化

<bean:write name="entity" property="dkhAFSumPl" format="0.00" />

完整執行範例

public class NumberFormatDemo {
    public static void main(String[] args) {
        double sd = 23.2558896635;
        
        // Math.round 乘除法
        System.out.println("4位小數:" + (double) Math.round(sd * 10000) / 10000.0);
        
        // DecimalFormat
        DecimalFormat df2 = new DecimalFormat("###.00");
        DecimalFormat df3 = new DecimalFormat("##.000");
        System.out.println("2位小數:" + df2.format(sd)); // 23.26
        System.out.println("3位小數:" + df3.format(sd)); // 23.256
    }
}

輸出:

4位小數:23.2559
2位小數:23.26
3位小數:23.256
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved