フォーマット番号に関連するスレッド数を確認しました。 ほとんどの場合、値3.101以外は機能します。 FloatとDoubleが##と00の形式で使用されています。Java - 10進形式浮動小数点または小数点を返すときに精度が失われる
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args)
{
Float d1 = -3.1011f;
Double ds = -3.1011;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println (Double.valueOf(df.format(d1)));
System.out.println (Double.valueOf(df.format(ds)));
DecimalFormat df2 = new DecimalFormat("#.00");
System.out.println (Double.valueOf(df2.format(d1)));
System.out.println (Double.valueOf(df2.format(ds)));
}
}
出力は次のようになります。
-3.1
-3.1
-3.1
-3.1
予想される出力:上記のように
-3.10
-3.10
-3.10
-3.10
が、これは私がテストしている他のすべての数字のために動作します。これは何らかの理由で問題を引き起こしています。
何がこの番号を非常に異なるものにするか、また2番目の数字を取得するために何が必要ですか?
キーは、私が最終的にフロートまたはダブルを返すことを覚えておいてください。
可能な複製(http://stackoverflow.com/questions/5710394/how-do-i [どのように私はJavaで小数点以下2桁のダブルを丸めるのですか?] -round-a-double-to-two-decimal-places-in-java) – Omore
私はあなたの質問が完全にはっきりしていません。 –
'Double.valueOf'ビットを削除すると、よりうまく動作します。 – assylias