一.
public static void main(String[] args) {
String d1 = "2.2";
String d2 = "2.260";
String d3 = "2.207";
String d4 = "2.996";
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(Double.parseDouble(d1)));
System.out.println(df.format(Double.parseDouble(d2)));
System.out.println(df.format(Double.parseDouble(d3)));
System.out.println(df.format(Double.parseDouble(d4)));
}
结果如下:
2.20
2.26
2.21
3.00
二.
public static void main(String[] args) {
double d1 = 2.254;
double d2 = 2.255;
double d3 = 2.256;
double d4 = 2.257;
BigDecimal bd1= new BigDecimal(d1);
BigDecimal bd2= new BigDecimal(d2);
BigDecimal bd3= new BigDecimal(d3);
BigDecimal bd4= new BigDecimal(d4);
System.out.println(bd1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(bd2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(bd3.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(bd4.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
结果如下:
2.25
2.25
2.26
2.26
原因:因为数值本身就是double类型,而double类型的2.255可能存值为2.2549999999999999999999这种,所以这种四舍五入方法可能会出现问题。
三.
public static void main(String[] args) {
double d1 = 0.20;
double d2 = 0.250;
double d3 = 0.299;
double d4 = 0.999;
System.out.println(String.format("%.2f", d1));
System.out.println(String.format("%.2f", d2));
System.out.println(String.format("%.2f", d3));
System.out.println(String.format("%.2f", d4));
}
结果如下:
0.20
0.25
0.30
1.00
四.