这个Java程序为什么运行出来的数据错误?

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:13:07
public class Jisuan {
public static void main(String[] args) {
double chang=1.9;
double kuan=0.3;
double mianji=chang*kuan;
double zhouchang=2*(kuan+chang);
System.out.println("矩形的面积是:"+mianji);
System.out.println("矩形的周长是:"+zhouchang);
}
}

得到的结果是:
矩形的面积是:0.57
矩形的周长是:4.3999999999999995
周长应该是4.4阿?为什么会出现小数?

double是双精度浮点型的,你出现了达不到double精度的数,计算机会自动给你精确到小数点后n位,解决的办法是自己写一个方法
来转换:
public static double formatDouble(double d, int decimalDigits) {
//精确到小数点后两位
return (double) Math.round(d * 10 * decimalDigits) / (10 * decimalDigits);
}

double存放的数据类型太大了,有的时候有问题,我们一般用float.你换吧double换成float类型就会看到你想得到的答案了,我测试过了,可以.