科学的表記法10進数に変換します
-
20-09-2019 - |
質問
私がやっていることであるのNumberFormatを使用することを提案しているように同様の質問があります。
私はの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.930000000000E + 02はかなり珍しい探している番号であるため、1.93
私は本当にこれが動作するように期待していなかった、私はゼロを削除する最初の解析いくつかの文字列をしなければならないのですか?あるいは、迅速かつエレガントな方法はありますか?
解決
あなたは科学表記法で表現してDecimalFormatを使用する場合は、
、あなたはパターンを指定する必要があります。
のようなものを試してみてくださいDecimalFormat dform = new DecimalFormat("0.###E0");
のDecimalFormat の javadocを参照してください。 - 。「科学的表記」
をマークされた箇所があります他のヒント
を使用すると、電子表記せずに何でも精度の列にあなたのダブルスとのBigDecimalに変換することができますので、String.format
構文を暗記:の
この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
あなたは二重のではなく、文字列としてのあなたの角度を取る場合は、あなたが使用することができますのprintf マジックます。
System.out.printf("%.2f", 1.930000000000E+02);
は、小数点以下2桁にフロートを表示します。 193.00
ます。
あなたが代わりに書式指定子として"%.2e"
を使用した場合、あなたは"1.93e+02"
になるだろう。
(正確に何をしたい出力わからないが、それは役に立つかもしれません。)
所属していません StackOverflow