一个很简单的问题,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,怎么会出现这个数字????
本人刚刚开始学,实在无法明白~!

由精度问题引起吧。

2进制和10进制的差异产生这样的结果。

float是单精度,double是双精度,它们所占的内存空间不一样,表示的位数也不一样。
除了科学计算以外,一般不用double型的。

你改成float 看看,
float chang=1.9f,kuan=0.3f;

这个是精度问题,在计算前,把数字转化为双精度,在计算机里就是2进制码,最后计算完就有可以损失精度,这个可以看你对精度的要求,自己写一个精度转化,然后4舍5入就没有问题了,或者直接用现成的类对数字进行规范也可以