3

私がやったことである NumberFormat を使用することを提案するSOに関する同様の質問があります。

NumberFormat の parse() メソッドを使用しています。

public static void main(String[] args) throws ParseException{

    DecToTime dtt = new DecToTime();
    dtt.decToTime("1.930000000000E+02");

}

public void decToTime(String angle) throws ParseException{

    DecimalFormat dform = new DecimalFormat();
    //ParsePosition pp = new ParsePosition(13);
    Number angleAsNumber = dform.parse(angle);

    System.out.println(angleAsNumber);
}

私が得る結果は

1.93

1.930000000000E+02 はかなり変わった数字なので、これがうまくいくとは思っていませんでした。ゼロを削除するために最初に文字列の解析を行う必要がありますか? または、迅速かつエレガントな方法はありますか?

4

3 に答える 3

3

構文を覚えてString.format、double と BigDecimals を e 表記なしで任意の精度の文字列に変換できるようにします。

この Java コード:

double dennis = 0.00000008880000d;
System.out.println(dennis);
System.out.println(String.format("%.7f", dennis));
System.out.println(String.format("%.9f", new BigDecimal(dennis)));
System.out.println(String.format("%.19f", new BigDecimal(dennis)));

版画:

8.88E-8
0.0000001
0.000000089
0.0000000888000000000
于 2014-01-05T19:31:40.820 に答える
2

科学的記数法の式でDecimalFormatを使用する場合は、パターンを指定する必要があります。次のようなものを試してください

DecimalFormat dform = new DecimalFormat("0.###E0");

DecimalFormatのjavadocsを参照してください。「ScientificNotation」とマークされたセクションがあります。

于 2010-03-15T16:16:28.237 に答える
1

角度を String ではなく double として取得する場合は、printfマジックを使用できます。

System.out.printf("%.2f", 1.930000000000E+02);

float を小数点以下 2 桁まで表示します。193.00.

代わり"%.2e"にフォーマット指定子として使用すると、次のようになります"1.93e+02"

(正確にどのような出力が必要かはわかりませんが、役立つ場合があります。)

于 2010-03-15T16:24:36.383 に答える