2017-11-12 3 views
1

DecimalFormatのフォーマット文字列(パターン)を検索したいと思います。これは、ダブル数字を文字列に変換するようなものです。 Double.toString(double)を使用してください。Double.toStringのように動作するDecimalFormatはありますか?

例:

1 → "1.0" 
123456.789 → "123456.789" 
1e50 → "1.0e50" 

ようなフォーマットが存在しますか?

+0

なぜDecimalFormatが必要ですか?代わりにコード '%g'で' Formatter'を使用できませんか? –

+0

@ JimGarrison私は数字を似たように書式化したいが若干異なっているので、そのためにDecimalFormatを使用できるかどうかを知りたいと思います。また、 '%g'の' Formatter'は、私が与えた例の結果が全く異なります。 – aditsu

+0

'Double.toString()'を使うのはどうですか?なぜそれは 'DecimalFormat'でなければならないのですか? –

答えて

1

私がこれまで決定したことから、Double.toString(これは私にとっては奇妙なもの)をエミュレートできるパターンはありませんが、2つのパターンと大きさの範囲で行うことができますDouble.toString(double) javadoc。ここで

は、仕事をするように見える方法です:

public static String fmt(final double d) { 
    final double a = Math.abs(d); 
    final boolean normal = a == 0 || a >= 1e-3 && a < 1e7; 
    final DecimalFormat f = new DecimalFormat(normal ? 
      "0.0##################" : 
      "0.0#################E0"); 
    return f.format(d); 
} 

それがNaNと無限大のために異なる結果を持っていますが、それらは特殊なケースとして扱うことができます。

関連する問題