以下のように試しました
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(...)
ください。