方法一:
double f = 0.5515;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
输出结果为0.55
double f = 0.5515;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); //3表示小数点保留的位数
System.out.println(f1);
输出结果为0.551
double f = 0.5515;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
输出结果为0.552
四舍五入的时候遇到5是采取舍去的方案。
此方法变换后的类型仍然是float。
方法二:
String f1 = new java.text.DecimalFormat("#.00").format(0.1415926);
System.out.println(f1); ;
输出结果为.14
String f1 = new java.text.DecimalFormat("#.00").format(3.1415926);
System.out.println(f1); ;
输出结果为3.14,类型是字符串。
String f1 = new java.text.DecimalFormat("#.000").format(1.1415926);//#.后面0的个数表示小数点保留的位数
System.out.println(f1);
输出结果为1.142
此方法的弊端是不能正确的显示绝对值小于1的小数!
方法三:
double d = 0.1415926;
String f1 = String .format("%.2f",d);//f前面,小数点后面的数字表示保留的位数
System.out.println(f1);
输出结果为0.34
double d = 0.1415926;
String f1 = String .format("%.3f",d);
System.out.println(f1);
输出结果为0.142
此方法变化后的类型是String。
方法四:
double x=0.5455;
NumberFormat ddf1=NumberFormat.getNumberInstance() ;
ddf1.setMaximumFractionDigits(2); //保留的小数位数
String s= ddf1.format(x) ;
System.out.print(s);
输出结果为0.55
此方法的变换类型是String。
方法五:
double f = 0.5253;
double f1 = Math.round( f * 100 ) / 100.0;
System.out.println(f1);
输出结果为0.53
double f = 4.015;
double f1 = Math.round( f * 100 ) / 100.0;
System.out.println(f1);
输出的结果为4.01
double f = 4.0151;
double f1 = Math.round( f * 100 ) / 100.0;
System.out.println(f1);
输出结果为4.02
保留小数的时候不是按照单纯的四舍五入,跟要保留的下一位还有关系。
此方法的变化类型是double,弊端是不能人为的设定保留的位数,默认就是保留两位!