以下のように試しました
String d=new String("12.00");
Double dble =new Double(d.valueOf(d));
System.out.println(dble);
出力:12.0
しかし、私は12.00の精度を取得したい
文字列クラスでformat()メソッドを使用せずに正しい方法を教えてください
以下のように試しました
String d=new String("12.00");
Double dble =new Double(d.valueOf(d));
System.out.println(dble);
出力:12.0
しかし、私は12.00の精度を取得したい
文字列クラスでformat()メソッドを使用せずに正しい方法を教えてください
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ます。
問題は精度の低下ではなく、数値の出力形式とその小数点以下の桁数です。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);
精度は失われていません。12.0は12.00とまったく同じです。小数点以下2桁で表示または印刷する場合は、java.text.DecimalFormat
出力をフォーマットする場合は、PrintStream#format(...)を使用します。
System.out.format("%.2f%n", dble);
そこに%.2f-小数点以下2桁と%n-改行文字。
を使用したくない場合はPrintStream#format(...)、を使用してDecimalFormat#format(...)ください。