一个很简单的问题,Java的初学~!
来源:百度知道 编辑:UC知道 时间:2024/05/07 07:53:38
一个矩形长1.9(m),宽0.3(m),计算面积与周长.
我用的是Eclipse,代码如下:
public class Exercise080320 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double chang=1.9,kuan=0.3;
double mianJi=chang*kuan;
double zhouChang=2*(chang+kuan);
System.out.println("矩形的面积为:\t"+mianJi);
System.out.println("矩形的周长为:\t"+zhouChang);
}
}
计算结果为:
矩形的面积为: 0.57
矩形的周长为: 4.3999999999999995
问题出在周长这里,明明是4.4,怎么会出现这个数字????
本人刚刚开始学,实在无法明白~!
我用的是Eclipse,代码如下:
public class Exercise080320 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double chang=1.9,kuan=0.3;
double mianJi=chang*kuan;
double zhouChang=2*(chang+kuan);
System.out.println("矩形的面积为:\t"+mianJi);
System.out.println("矩形的周长为:\t"+zhouChang);
}
}
计算结果为:
矩形的面积为: 0.57
矩形的周长为: 4.3999999999999995
问题出在周长这里,明明是4.4,怎么会出现这个数字????
本人刚刚开始学,实在无法明白~!
由精度问题引起吧。
2进制和10进制的差异产生这样的结果。
float是单精度,double是双精度,它们所占的内存空间不一样,表示的位数也不一样。
除了科学计算以外,一般不用double型的。
你改成float 看看,
float chang=1.9f,kuan=0.3f;
这个是精度问题,在计算前,把数字转化为双精度,在计算机里就是2进制码,最后计算完就有可以损失精度,这个可以看你对精度的要求,自己写一个精度转化,然后4舍5入就没有问题了,或者直接用现成的类对数字进行规范也可以