5

以下のように試しました

String d=new String("12.00");
Double dble =new Double(d.valueOf(d));
System.out.println(dble);

出力:12.0

しかし、私は12.00の精度を取得したい

文字列クラスでformat()メソッドを使用せずに正しい方法を教えてください

4

4 に答える 4

8

BigDecimalダブルの代わりに使用:

String d = "12.00"; // No need for `new String("12.00")` here
BigDecimal decimal = new BigDecimal(d);

これが機能BigDecimalするのは、「精度」を維持し、BigDecimal(String)コンストラクターがそれを桁数からの右側に設定し.、それをで使用するためですtoString。したがって、でダンプするだけでSystem.out.println(decimal);、が出力され12.00ます。

于 2013-03-08T16:07:13.700 に答える
8

問題は精度の低下ではなく、数値の出力形式とその小数点以下の桁数です。DecimalFormatあなたはあなたの問題を解決するために使うことができます。

DecimalFormat formatter = new DecimalFormat("#0.00");
String d = new String("12.00");
Double dble = new Double(d.valueOf(d));
System.out.println(formatter.format(dble));

DecimalFormatSymbolsまた、使用する小数点記号を選択するために使用できることも追加します。たとえば、ポイント:

DecimalFormatSymbols separator = new DecimalFormatSymbols();
separator.setDecimalSeparator('.');

DecimalFormat次に、あなたの:を宣言しながら

DecimalFormat formatter = new DecimalFormat("#0.00", separator);
于 2013-03-08T16:08:53.477 に答える
2

精度は失われていません。12.0は12.00とまったく同じです。小数点以下2桁で表示または印刷する場合は、java.text.DecimalFormat

于 2013-03-08T16:10:00.197 に答える
1

出力をフォーマットする場合は、PrintStream#format(...)を使用します。

System.out.format("%.2f%n", dble);

そこに%.2f-小数点以下2桁と%n-改行文字。

アップデート:

を使用したくない場合はPrintStream#format(...)、を使用してDecimalFormat#format(...)ください。

于 2013-03-08T16:09:18.450 に答える