double类型保留小数点后两位的几种方法
返回double类型
返回double类型需要注意的是:如果结果为2020.10时,输出的值为2020.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类型的第一种方法和第二种方法比较常用。
需要注意的是,第三种方法的返回值,每隔一千会加一个“,”即2020.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类型
测试的值为2020.1024
----------返回Double类型--------------
Double,第一种方法的值为:2020.1
Double,第二种方法的值为:2020.1
----------返回String类型--------------
String,第一种方法的值为:2020.10
String,第二种方法的值为:2020.10
String,第三种方法的值为:2,020.1
测试四舍五入
测试的值为2020.1556
----------返回Double类型--------------
Double,第一种方法的值为:2020.16
Double,第二种方法的值为:2020.16
----------返回String类型--------------
String,第一种方法的值为:2020.16
String,第二种方法的值为:2020.16
String,第三种方法的值为:2,020.16
测试的值为2020.1546
----------返回Double类型--------------
Double,第一种方法的值为:2020.15
Double,第二种方法的值为:2020.15
----------返回String类型--------------
String,第一种方法的值为:2020.15
String,第二种方法的值为:2020.15
String,第三种方法的值为:2,020.15