这一题主要是考察四舍五入,保留小数点后n位
以下是找到的几个保留小数7位的方法
方法一:使用DecimalFormat类
//1.#.00 表示两位小数 #.0000四位小数 以此类推...
double d1=3.14159265358979323;
DecimalFormat df=new DecimalFormat("#.0000000");
String dd1=df.format(d1); //返回的是一个String类型的值
System.out.println(Double.parseDouble(dd1));//结果是四舍五入3.1415926
方法二:使用BigDecimal类的setScale方法
double d2=3.14159265358979323;
BigDecimal bd=new BigDecimal(d2);
double dd2=bd.setScale(7,BigDecimal.ROUND_HALF_UP).doubleValue();//参数:ROUND_HALF_UP--四舍五入
System.out.println(dd2);
方法三:使用setMaximumFractionDigits方法
//3.结果也是四舍五入
double d3=3.14159265358979323;
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(7);//设置要保留的数位
String s=nf.format(d3);
System.out.println(s);
方法四:通过类型转换(不能四舍五入)
//5 先*100转成int再除以100.0(是100的小数类型),同理 3位的话就是1000
double d5=3.14159265358979323;
d5=((int)(d5*10000000))/10000000.0;
System.out.println(d5); //不能四舍五入 3.1415926
方法五:利用Math.round()实现
//round(double a) 返回最接近参数的 long。 //round(float a) 返回最接近参数的 int。 double d5=3.14159265358979323; double dd5=Math.round(d5*10000000); double dd5=d5/10000000;//保留2位 就是*100 ,再/100 System.out.println(dd5); //结果是四舍五入