double类型保留小数点后两位的几种方法
返回double类型
返回double类型需要注意的是:如果结果为.10时,输出的值为.1,只保留了一位小数。
//四舍五入double one = (double)Math.round(demo*100)/100;System.out.println("Double,第一种方法的值为:" + one);//BigDecimal.ROUND_HALF_UP表示四舍五入,BigDecimal.ROUND_HALF_DOWN表示五舍六入,//BigDecimal.ROUND_UP表示进位处理(直接加1),BigDecimal.ROUND_DOWN表示直接去掉尾数。BigDecimal bd = new BigDecimal(demo);double two = bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();System.out.println("Double,第二种方法的值为:" + two);
返回String类型
返回String类型的第一种方法和第二种方法比较常用。需要注意的是,第三种方法的返回值,每隔一千会加一个“,”即.10的输出结果为2,020.1。
//#.00表示保留后两位,它的处理方式是直接截掉不要的尾数,不要四舍五入。DecimalFormat df = new DecimalFormat("#.00");String three = df.format(demo);System.out.println("String,第一种方法的值为:" + three);//%.2f表示保留小数点后两位,四舍五入。String four = String.format("%.2f",demo);System.out.println("String,第二种方法的值为:" + four);//setMaximumFractionDigits(int newValue)设置数的小数部分所允许的最大位数。NumberFormat nbf = NumberFormat.getNumberInstance();nbf.setMaximumFractionDigits(2);String five = nbf.format(demo);System.out.println("String,第三种方法的值为:" + five);
先看代码:
//double类型保留小数点后两位的几种方法public static void doubleTwo(double demo){System.out.println("测试的值为" + demo);System.out.println("----------返回Double类型--------------");//四舍五入double one = (double)Math.round(demo*100)/100;System.out.println("Double,第一种方法的值为:" + one);//BigDecimal.ROUND_HALF_UP表示四舍五入,BigDecimal.ROUND_HALF_DOWN表示五舍六入,//BigDecimal.ROUND_UP表示进位处理(直接加1),BigDecimal.ROUND_DOWN表示直接去掉尾数。BigDecimal bd = new BigDecimal(demo);double two = bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();System.out.println("Double,第二种方法的值为:" + two);System.out.println("----------返回String类型--------------");//#.00表示保留后两位,它的处理方式是直接截掉不要的尾数,不要四舍五入。DecimalFormat df = new DecimalFormat("#.00");String three = df.format(demo);System.out.println("String,第一种方法的值为:" + three);//%.2f表示保留小数点后两位,四舍五入。String four = String.format("%.2f",demo);System.out.println("String,第二种方法的值为:" + four);//setMaximumFractionDigits(int newValue)设置数的小数部分所允许的最大位数。NumberFormat nbf = NumberFormat.getNumberInstance();nbf.setMaximumFractionDigits(2);String five = nbf.format(demo);System.out.println("String,第三种方法的值为:" + five);}
测试结果:
测试double与String类型
测试的值为.1024----------返回Double类型--------------Double,第一种方法的值为:.1Double,第二种方法的值为:.1----------返回String类型--------------String,第一种方法的值为:.10String,第二种方法的值为:.10String,第三种方法的值为:2,020.1
测试四舍五入
测试的值为.1556----------返回Double类型--------------Double,第一种方法的值为:.16Double,第二种方法的值为:.16----------返回String类型--------------String,第一种方法的值为:.16String,第二种方法的值为:.16String,第三种方法的值为:2,020.16测试的值为.1546----------返回Double类型--------------Double,第一种方法的值为:.15Double,第二种方法的值为:.15----------返回String类型--------------String,第一种方法的值为:.15String,第二种方法的值为:.15String,第三种方法的值为:2,020.15