我想设置
以下的最小分数位数double a = 1d / 3;
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(30);
System.out.println(nf.format(a));
但它将结果作为
0.333333333333333300000000000000
我怎样才能克服这个?
答案 0 :(得分:1)
尝试这样的事情:
BigDecimal b1 = new BigDecimal(1);
BigDecimal b2 = new BigDecimal(3);
System.out.println(b1.divide(b2, 30, BigDecimal.ROUND_UP));
答案 1 :(得分:1)
double
类型的精度限制为大约16个十进制数字(参见:Double-precision floating-point format)。因此,从double
打印30位数字没有多大意义。
如果您需要无限精度浮点数,请使用BigDecimal
。