程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> numberformat-關於NumberFormat的截位問題

numberformat-關於NumberFormat的截位問題

編輯:編程綜合問答
關於NumberFormat的截位問題

如下是我寫的一段代碼:
public class NumberTest {

/**
 * @param args
 */
public static void main(String[] args) {
    System.out.println(formatDouble(5.225));
    System.out.println(formatDouble(5.226));
    System.out.println(formatDouble(5.2251));
}

 private static String formatDouble(double data)
  {
    String ret = null;
    try {
      NumberFormat form = NumberFormat.getInstance();
      String mask = "###0.00";
      ((DecimalFormat)form).applyPattern(mask);
      ret = form.format(data);
    } catch (Exception e) {
      e.printStackTrace();
      ret = null;
    }
    return ret;
  }

}
輸出結果為:
5.22
5.23
5.23
為什麼第一個沒有四捨五入呢???

最佳回答:


formatNumber標簽使用的是4捨6入5奇偶"的算法. 要實現"四捨五入",只需要在原有值的基礎上再加一個比較小的值即可:
"4捨6入5奇偶":
System.out.println(formatDouble(5.225));
"4捨5入":
System.out.println(formatDouble(5.225+0.0001));

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved