Java保留兩位小數的幾種做法


1. 

String類型數字始終保留兩位小數

public static void main(String[] args) {    
    DecimalFormat format = new DecimalFormat("0.00");
    String abc ="100.456";
    String a = format.format(new BigDecimal(abc));
    System.out.println(a);
    }

 2. 另外幾種辦法

原文 

 

在平時做項目時,可能有這樣的業務需求: 頁面或界面上展示的數據保留小數點后兩位。  

為了達到這樣的展示效果,本文列舉了幾個方法: 

1. 使用java.math.BigDecimal 
2. 使用java.text.DecimalFormat 
3. 使用java.text.NumberFormat 
4. 使用java.util.Formatter 
5. 使用String.format
 

... ... 另外可以自己實現或者借用封裝好的類庫來實現,在這篇文章中就不一一列舉了。 

本文給出上述5種方法的簡單實現。 

代碼如下:  

Java代碼   收藏代碼
  1. import java.math.BigDecimal;  
  2. import java.math.RoundingMode;  
  3. import java.text.DecimalFormat;  
  4. import java.text.NumberFormat;  
  5. import java.util.Formatter;  
  6.   
  7. public final class PrecisionTest {  
  8.   
  9.     private PrecisionTest() {  
  10.     }  
  11.   
  12.     /** 
  13.      * 使用BigDecimal,保留小數點后兩位 
  14.      */  
  15.     public static String format1(double value) {  
  16.   
  17.         BigDecimal bd = new BigDecimal(value);  
  18.         bd = bd.setScale(2, RoundingMode.HALF_UP);  
  19.         return bd.toString();  
  20.     }  
  21.   
  22.     /** 
  23.      * 使用DecimalFormat,保留小數點后兩位 
  24.      */  
  25.     public static String format2(double value) {  
  26.   
  27.         DecimalFormat df = new DecimalFormat("0.00");  
  28.         df.setRoundingMode(RoundingMode.HALF_UP);  
  29.         return df.format(value);  
  30.     }  
  31.   
  32.     /** 
  33.      * 使用NumberFormat,保留小數點后兩位 
  34.      */  
  35.     public static String format3(double value) {  
  36.   
  37.         NumberFormat nf = NumberFormat.getNumberInstance();  
  38.         nf.setMaximumFractionDigits(2);  
  39.         /* 
  40.          * setMinimumFractionDigits設置成2 
  41.          *  
  42.          * 如果不這么做,那么當value的值是100.00的時候返回100 
  43.          *  
  44.          * 而不是100.00 
  45.          */  
  46.         nf.setMinimumFractionDigits(2);  
  47.         nf.setRoundingMode(RoundingMode.HALF_UP);  
  48.         /* 
  49.          * 如果想輸出的格式用逗號隔開,可以設置成true 
  50.          */  
  51.         nf.setGroupingUsed(false);  
  52.         return nf.format(value);  
  53.     }  
  54.   
  55.     /** 
  56.      * 使用java.util.Formatter,保留小數點后兩位 
  57.      */  
  58.     public static String format4(double value) {  
  59.         /* 
  60.          * %.2f % 表示 小數點前任意位數 2 表示兩位小數 格式后的結果為 f 表示浮點型 
  61.          */  
  62.         return new Formatter().format("%.2f", value).toString();  
  63.     }  
  64.   
  65.     /** 
  66.      * 使用String.format來實現。 
  67.      *  
  68.      * 這個方法其實和format4是一樣的 
  69.      */  
  70.     public static String format5(double value) {  
  71.   
  72.         return String.format("%.2f", value).toString();  
  73.     }  
  74. }  


測試代碼及結果: 

Java代碼   收藏代碼
  1. public class Main {  
  2.   
  3.     public static void main(String[] args) {  
  4.   
  5.         double[] testData = new double[] { 100.123D, 1234567.897D, 100.0052D,  
  6.                 80.00D };  
  7.   
  8.         for (double value : testData) {  
  9.             System.out.println(PrecisionTest.format1(value));  
  10.             System.out.println(PrecisionTest.format2(value));  
  11.             System.out.println(PrecisionTest.format3(value));  
  12.             System.out.println(PrecisionTest.format4(value));  
  13.             System.out.println(PrecisionTest.format5(value));  
  14.         }  
  15.     }  
  16. }  


100.12 
100.12 
100.12 
100.12 
100.12 
1234567.90 
1234567.90 
1234567.90 
1234567.90 
1234567.90 
100.01 
100.01 
100.01 
100.01 
100.01 
80.00 
80.00 
80.00 
80.00 
80.00

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM