java四舍五入 保留两位小数

java四舍五入 保留两位小数
x1=((double)(-b)+Math.sqrt((double)d))/(2*(double)a);
x2=((double)(-b)-Math.sqrt((double)d))/(2*(double)a);
x1=Math.round(x1/0.01)*0.01;
x2=Math.round(x2/0.01)*0.01;

a=21 b=89 c=35 为什么x1能输出-0.44 但是x2就会变成-3.80000000000003呢?!!!
因为double型小数部分会在从二进制变十进制的类型变换中产生误差,所以x2会变成-3.80000000000003,如果要使输出四舍五入 保留两位小数,可以用String的format函数,方法如下:
System.out.println(String.format("%.2f", x1));
System.out.println(String.format("%.2f", x2));
小数计算java常会出现精度失真的问题,用 java.math.BigDecimal类可以解决
← 上一篇: 下一篇: →