Double类型有以下几种保留小数的方式

一、BigDecimal方法

BigDecimal.ROUND_HALF_UP:四舍五入

BigDecimal.ROUND_HALF_DOWN:五舍六入

BigDecimal.ROUND_UP表示进位处理(就是直接加1)

BigDecimal.ROUND_DOWN表示直接去掉尾数

double d = 208.125;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d);

输入结果:208.13

注:BigDecimal的保留小数位的方法,只能多变少,不能少变多,如208.1 在setScale(2)后,还是208.1而不是208.10。

固定保留2位的方式,只能采用以下第二种方法,转换成string。

二、转换成String字符串方式

  1.使用“#.00”,保留后两位,直接截取前面两数,尾数不四舍五入。

double d = 208.125;
DecimalFormat df = new DecimalFormat("#.00");
String str = df.format(d);
System.out.println(str);

输出结果:208.12

2.使用“%.2f”,保留后两位,四舍五入

double d = 208.125;
String.format("%.2f", d);

输出结果:208.13