<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA牛棚

    我們愛JAVA

    常用鏈接

    統計

    群友的BLOG

    最新評論

    Java中如何確定浮點數的精度(摘)

    時時整理

    //保留小數點后兩位小數
    public double Number2(double pDouble)
    {
      BigDecimal  bd=new  BigDecimal(pDouble);
      BigDecimal  bd1=bd.setScale(2,bd.ROUND_HALF_UP);
      pDouble=bd1.doubleValue();
      long  ll = Double.doubleToLongBits(pDouble);
      return pDouble;
    }

    格式化輸出數字
    翻譯:Cherami
    email:cherami@163.net
    原文:http://developer.java.sun.com/developer/TechTips/2000/tt0411.html
    * 格式化輸出數字
    格式化輸出數字
    有時我們需要控制輸出的數字的格式,如何使用java的類庫做到這個呢?
    也許你不關心格式,但是你需要關心你的程序可以在全世界通用,像下面的這樣一個簡單的語句是依賴地區的:
        System.out.println(1234.56);
    在美國,"." 是小數點,但在其它地方就不一定了。如何處理這個呢?

    java.text 包中的一些包可以處理這類問題。下面的簡單范例使用那些類解決上面提出的問題:
        import java.text.NumberFormat;
        import java.util.Locale;
        public class DecimalFormat1 {
            public static void main(String args[]) {
                // 得到本地的缺省格式
                NumberFormat nf1 = NumberFormat.getInstance();
                System.out.println(nf1.format(1234.56));
                // 得到德國的格式
                NumberFormat nf2 =
                    NumberFormat.getInstance(Locale.GERMAN);
                System.out.println(nf2.format(1234.56));
            }
        }

    如果你在美國,運行程序后輸出:
        1,234.56
        1.234,56
    換句話說,在不同的地方使用不同的習慣表示數字。

    NumberFormat.getInstance()方法返回NumberFormat的一個實例(實際上是NumberFormat具體的一個子類,例如DecimalFormat), 這適合根據本地設置格式化一個數字。你也可以使用非缺省的地區設置,例如德國。然后格式化方法根據特定的地區規則格式化數字。這個程序也可以使用一個簡單的形式:
        NumberFormat.getInstance().format(1234.56)
    但是保存一個格式然后重用更加有效。國際化是格式化數字時的一個大問題。
    另一個是對格式的有效控制,例如指定小數部分的位數,下面是解決這個問題的一個簡單例子:
        import java.text.DecimalFormat;
        import java.util.Locale;
        public class DecimalFormat2 {
            public static void main(String args[]) {
                // 得到本地的缺省格式
                DecimalFormat df1 = new DecimalFormat("####.000");
                System.out.println(df1.format(1234.56));
                // 得到德國的格式
                Locale.setDefault(Locale.GERMAN);
                DecimalFormat df2 = new DecimalFormat("####.000");
                System.out.println(df2.format(1234.56));
            }
        }
    在這個例子中設置了數字的格式,使用像"####.000"的符號。這個模式意味著在小數點前有四個數字,如果不夠就空著,小數點后有三位數字,不足用0補齊。程序的輸出:
        1234.560
        1234,560
    相似的,也可以控制指數形式的格式,例如:
        import java.text.DecimalFormat;
        public class DecimalFormat3 {
            public static void main(String args[]) {
                DecimalFormat df = new DecimalFormat("0.000E0000");
                System.out.println(df.format(1234.56));
            }
        }
    輸出:
        1.235E0003
    對于百分數:
        import java.text.NumberFormat;
        public class DecimalFormat4 {
            public static void main(String args[]) {
                NumberFormat nf = NumberFormat.getPercentInstance();
                System.out.println(nf.format(0.47));
            }
        }
    輸出:
        47%
    至此,你已經看到了格式化數字的幾個不同的技術。另一方面,如何讀取并解析包含格式化的數字的字符串?解析支持包含在NumberFormat中。例如:
        import java.util.Locale;
        import java.text.NumberFormat;
        import java.text.ParseException;
        public class DecimalFormat5 {
            public static void main(String args[]) {
                // 本地格式
                NumberFormat nf1 = NumberFormat.getInstance();
                Object obj1 = null;
                // 基于格式的解析
                try {
                    obj1 = nf1.parse("1234,56");
                }
                catch (ParseException e1) {
                    System.err.println(e1);
                }
                System.out.println(obj1);
                // 德國格式
                NumberFormat nf2 =NumberFormat.getInstance(Locale.GERMAN);
                Object obj2 = null;
                // 基于格式的解析
                try {
                    obj2 = nf2.parse("1234,56");
                }
                catch (ParseException e2) {
                    System.err.println(e2);
                }
                System.out.println(obj2);
            }
        }
    這個例子分兩部分,都是解析一個字符串:"1234,56"。第一部分使用本地格式解析,第二部分使用德國格式解析。當程序在美國運行,結果是:
        123456
        1234.56
    換句話說,"1234,56"在美國被認為是一個巨大的整數"123456"而在德國被認為是一個小數"1234.56"。
    還有格式化討論的最后一個問題。在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于獲得很好的格式控制,而NumberFormat 常用于指定不同于本地的地區。如何結合兩個類呢?

    答案圍繞著這樣的事實:DecimalFormat是NumberFormat的一個子類,其實例被指定為特定的地區。因此,你可以使用NumberFormat.getInstance 指定一個地區,然后將結構強制轉換為一個DecimalFormat對象。文檔中提到這個技術可以在大多情況下適用,但是你需要用try/catch 塊包圍強制轉換以防轉換不能正常工作 (大概在非常不明顯得情況下使用一個奇異的地區)。下面是一個這樣的例子:
        import java.text.DecimalFormat;
        import java.text.NumberFormat;
        import java.util.Locale;
        public class DecimalFormat6 {
            public static void main(String args[]) {
                DecimalFormat df = null;
                // 得到一個NumberFormat 對象并
                // 強制轉換為一個 DecimalFormat 對象
                try {
                    df = (DecimalFormat)
                        NumberFormat.getInstance(Locale.GERMAN);
                }
                catch (ClassCastException e) {
                    System.err.println(e);
                }
                // 設置格式模式
                df.applyPattern("####.00000");
                // format a number
                System.out.println(df.format(1234.56));
            }
        }

    getInstance() 方法獲得格式,然后調用applyPattern()方法設置格式模式,輸出:
        1234,56000
    如果你不關心國際化,可以直接使用DecimalFormat 。

    posted on 2005-11-04 11:44 JAVA牛棚 閱讀(1113) 評論(0)  編輯  收藏 所屬分類: 基礎知識

    主站蜘蛛池模板: 亚洲日韩涩涩成人午夜私人影院| 亚洲AV无码久久精品蜜桃| 四虎成人精品国产永久免费无码| 亚洲性久久久影院| 久久A级毛片免费观看| 亚洲精品午夜国产va久久| 亚洲国产成人久久综合野外| a级日本高清免费看| 亚洲日韩国产精品乱-久| 亚洲第一视频在线观看免费| 亚洲免费视频网站| 亚洲av无码专区青青草原| 亚洲精品高清国产一线久久| av大片在线无码免费| 人人鲁免费播放视频人人香蕉| 亚洲av无码不卡| 日韩视频在线免费观看| 日韩精品无码免费专区午夜不卡| 亚洲日韩在线视频| 亚洲一区二区视频在线观看| 99久热只有精品视频免费观看17| 亚洲成a人片在线不卡一二三区| 国产亚洲精品自在久久| 免费毛片在线播放| 8x成人永久免费视频| 美女黄频a美女大全免费皮| 久久精品a亚洲国产v高清不卡 | 精品视频免费在线| 亚洲视频手机在线| 成人亚洲性情网站WWW在线观看| 成人午夜免费福利视频| 成人av片无码免费天天看| 亚洲欧洲无码AV不卡在线| 亚洲一区中文字幕久久| 亚洲国产一区视频| 在线免费视频一区二区| 久久午夜羞羞影院免费观看| 一级毛片在线播放免费| 亚洲另类无码一区二区三区| 亚洲婷婷综合色高清在线| 久久国产亚洲电影天堂|