小数点以下の最小桁数を設定したい
double a = 1d / 3;
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(30);
System.out.println(nf.format(a));
しかし、それは次のような結果をもたらします
0.333333333333333300000000000000
どうすればこれを克服できますか?
次のようなことを試してください:
BigDecimal b1 = new BigDecimal(1);
BigDecimal b2 = new BigDecimal(3);
System.out.println(b1.divide(b2, 30, BigDecimal.ROUND_UP));
この型の精度は、double
10 進数で約 16 桁に制限されています (倍精度浮動小数点形式を参照してください)。したがって、 から 30 桁を出力することはあまり意味がありませんdouble
。
BigDecimal
無制限の精度の浮動小数点数が必要な場合に使用します。