Javaで切り上げるDouble値 質問する

Javaで切り上げるDouble値 質問する

倍精度浮動小数点値があります1.068879335。1.07 のように 2 つの小数値のみで切り上げたいです。

こうやってみました

DecimalFormat df=new DecimalFormat("0.00");
String formate = df.format(value);
double finalValue = Double.parseDouble(formate) ;

これにより、次の例外が発生します

java.lang.NumberFormatException: For input string: "1,07"
     at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
     at java.lang.Double.parseDouble(Double.java:510)

私のコードの何が間違っているのか誰か教えてもらえますか。

最後に、finalValue = が必要です1.07;

ベストアンサー1

文字列内のカンマに注意してください: "1,07"。DecimalFormatはロケール固有の区切り文字列を使用しますが、Double.parseDouble()は使用しません。小数点区切りが "," である国に住んでいるため、数値を解析することはできません。

ただし、同じものを使用してDecimalFormat解析し直すことができます。

DecimalFormat df=new DecimalFormat("0.00");
String formate = df.format(value); 
double finalValue = (Double)df.parse(formate) ;

しかし、実際には代わりにこれを実行する必要があります:

double finalValue = Math.round( value * 100.0 ) / 100.0;

注記:すでに指摘したように、浮動小数点を使用するのは、精度を正確に制御する必要がない場合に限ります。(金融計算が主な例です。ない使用するには。

おすすめ記事