2011-12-14 8 views
9
public static String formatAmountUpToTwoDecimalNumber(String amount) 
    {  
     if(amount==null || "".equals(amount)) 
     { 
      return ""; 
     } 
     Double doubleAmount = Double.valueOf(amount); 
     double myAmount = doubleAmount.doubleValue(); 
     NumberFormat f = new DecimalFormat("###,###,###,###,##0.00"); 
     String s = f.format(myAmount); 
     return s; 
    } 

"###,###,###,###,##0.00"、?私はそれが欠落している小数点以下が23.00 てDecimalFormatパターン

しかし、なぜそこに23を変換している場合には、小数点の後に二つのゼロを追加するために千個の区切り文字をカンマに

  • を入れて、それは二つの目的

    グループ番号へ
    1. を提供しています信じています10進数の前に"#"の代わりに"0"ですか?このゼロの目的は正確に何ですか? 助けてくれてありがとう。

  • 答えて

    18
    Symbol Location Localized? Meaning 
    0  Number  Yes   Digit 
    #  Number  Yes   Digit, zero shows as absent 
    

    :何の数が存在しないときにhttp://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

    #は表示されません。先頭の0は、小数点記号の前に少なくとも1桁があることを意味します。

    +2

    私はドキュメンテーションを見ましたが、本当に理解できませんでした。私は混乱していました。文字通り意味がなくてはいけませんか? – Zohaib

    +1

    書類で説明されているように、書式文字列で使用されるときにゼロをリテラルにするべきではありません。 – Pieter

    +0

    「少なくとも1桁の数字があります」と言いたいのですが、10進数の前に桁がなければ、0.7を渡すと、先行ゼロを付けた後に0.70が返されますか? – Zohaib

    4

    #は、先行ゼロでない場合にのみ数字を入力します。 0は、末尾のゼロであっても数字を配置します。固定桁数を印刷したい場合は、先頭にゼロを使用することもできます。

    4

    dpより前の0の場合、0.23のような小さい数字は0.23と表示されます。それがなければ先行ゼロは得られないので、.23と表示されます。 Excelのようなスプレッドシートをお持ちの場合は、これもチェックできます。

    +1

    私はちょうどこれを###。###でテストしたところ、0.23を得ました。私がやっていることのために先行ゼロを望まないので、かなり厄介です。 – MikeB

    +0

    @MikeB - Excel 2003と先行ゼロ### – DaveRlz

    +1

    @DaveRizしかし、これはJavaの質問です – MikeB

    関連する問題