代码:
double d = -123456789012345.3426;//5898895455898954895989;
NumberFormat nf = new DecimalFormat("#0.###");
nf.setMinimumFractionDigits(3);// 小数点后不足的补零:小数点之后最多3位数字
String amt = nf.format(d);// 将double类型的数格式化并转换成字符串,实际上进行了四舍五入
System.out.println("a:" + amt);
BigDecimal bd = new BigDecimal(String.valueOf(d));
bd = bd.setScale(3, BigDecimal.ROUND_HALF_UP);
String amtb = bd.toString();
System.out.println("b:" + amtb); 运行效果:a:-123456789012345.340
b:-123456789012345.340
这显然不是我想要的,我要的结果为:-123456789012345.343
double d = -123456789012345.3426;//5898895455898954895989;
NumberFormat nf = new DecimalFormat("#0.###");
nf.setMinimumFractionDigits(3);// 小数点后不足的补零:小数点之后最多3位数字
String amt = nf.format(d);// 将double类型的数格式化并转换成字符串,实际上进行了四舍五入
System.out.println("a:" + amt);
BigDecimal bd = new BigDecimal(String.valueOf(d));
bd = bd.setScale(3, BigDecimal.ROUND_HALF_UP);
String amtb = bd.toString();
System.out.println("b:" + amtb); 运行效果:a:-123456789012345.340
b:-123456789012345.340
这显然不是我想要的,我要的结果为:-123456789012345.343
double d = -123456789012345.3426;//5898895455898954895989;
System.out.println("d:" + d);
输出结果就知道了。先转化为科学计数法:-1.2345678901234534E14自动舍掉了26所以格式化的时候自然就是.340了
double d = -3456789012345.3426;设成这样的时候就是正确的了