方法一:使用DecimalFormat类(最常用)
//1.#.00 表示两位小数 #.0000四位小数 以此类推...
double d1=123.4567;
DecimalFormat df=new DecimalFormat("#.00");
String dd1=df.format(d1); //返回的是一个String类型的值
System.out.println(Double.parseDouble(dd1));//结果是四舍五入
输出:123.46
方法二:使用BigDecimal类的setScale方法
double d2=123.4567;
BigDecimal bd=new BigDecimal(d2);
double dd2=bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//参数:ROUND_HALF_UP--四舍五入
System.out.println(dd2);
结果:123.46
方法三:使用setMaximumFractionDigits方法
//3.结果也是四舍五入
double d3=3.1415926;
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);//设置要保留的数位
String s=nf.format(d3);
System.out.println(s);
结果:3.14
方法四:利用算法实现
double d4=3.1415926;
d4=Math.round(d4*100);
double dd4=d4/100;//保留3位 就是*1000 ,再/1000
System.out.println(dd4);
结果:3.14
方法五:通过类型转换
//5 先*100转成int再除以100.0(是100的小数类型),同理 3位的话就是1000
double d5=3.1415926;
d5=((int)(d5*100))/100.0;
System.out.println(d5);
结果:3.14
方法六:
double d6=3.1415926;
StringBuilder s6=new StringBuilder(d6+"");
String ss6=s6.substring(0, s6.indexOf(".")+3);
System.out.println(Double.parseDouble(ss6));
结果:3.14
方法七:
double a=3.1415926;
double b=3.1415926;
double c=3.1415926;
String str1=String.format("%.2f",a);
System.out.println(Double.parseDouble(str1));
String str2= String.format("%.2f,%.2f,%.2f ",a,b,c);//可以传多参数,就是不好取
System.out.println(str2);
结果:3.14
3.14,3.14,3.14