日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java DecimalFormat四舍五入的坑及正确用法

發布時間:2025/3/8 39 如意码农
生活随笔 收集整理的這篇文章主要介紹了 Java DecimalFormat四舍五入的坑及正确用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、DecimalFormat四舍五入的坑

  1.1 有時候我們在處理小數保留幾位小數時,想到了DecimalFormat這個類的使用,百度搜一把可能用到以下方式。

 1     public static void main(String[] args) {
2 String str="3.145";
3 System.out.println(round1(str));
4 }
5
6 static String round1(String str){
7 double a=Double.parseDouble(str);
8 DecimalFormat df=new DecimalFormat("###.00");
9 return df.format(a);
10 }

  1.2 初看好像沒什么問題,四舍五入保留兩位小數,最后輸出3.15。當然精度要求不高,也無需計較。當涉及到精確統計時,這里的坑來了將上面的字符串改為“5”前面為奇數,如“3.155”,就瓜了,輸出3.15。顯然這里沒滿足要求,不是我們學校里的四舍五入。再上一段代碼。

1     static String round2(String str){
2 double a=Double.parseDouble(str);
3 DecimalFormat df=new DecimalFormat("###.00");
4 df.setRoundingMode(RoundingMode.HALF_UP);
5 return df.format(a);
6 }

  這里可以看到這個setRoundingMode()方法可以設定四舍五入的模式,原來四舍五入不光有我們學校里學的那種,還有其他模式。DecimalFormat默認情況下,它使用 RoundingMode.HALF_EVEN,此舍入模式也稱為“銀行家舍入法”,主要在美國使用。RoundingMode.HALF_UP這個模式才是我們學校里學的標準四舍五入模式。以上代碼雖然舍了學校型模式仍然不準確,應該將double類型改為BigDecimal類型。

二、學校型四舍五入幾種正確使用

  2.1 String直接格式化

1     static String round3(String str){
2 double d=Double.parseDouble(str);
3 return String.format("%.2f",d);
4 }

  2.2 BigDecimal結合DecimalFormat,BigDecimal比較好性能,數據處理量大不建議使用。

1     static String round4(String str){
2 BigDecimal bigDecimal=new BigDecimal(str);
3 DecimalFormat df=new DecimalFormat("###.00");
4 df.setRoundingMode(RoundingMode.HALF_UP);
5 return df.format(bigDecimal);
6 }

  2.3 BigDecimal單獨使用,這個類也自帶舍入模式設定方法。

1     static String round5(String str){
2 BigDecimal bigDecimal=new BigDecimal(str);
3 return String.valueOf(bigDecimal.setScale(2,RoundingMode.HALF_UP));
4 }

總結

以上是生活随笔為你收集整理的Java DecimalFormat四舍五入的坑及正确用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。