[code="java"]
package hello;
public class Test {
public static double area(double d)
{
return d * d;
}
public static double perimeter(double d)
{
return d * 4;
}
public static void main(String args[])
{
double d = 3.1;
System.out.println("面积:" + area(d));
System.out.println("周长:" + perimeter(d));
}
}
[/code]
输出面积竟然是9.610000000000001,怎么回事啊?
[url]http://www.blogjava.net/yeyiliang/archive/2006/09/13/69439.html[/url]
看看这个
[code="java"]
//etc...
//double d = 3.1;
double d = 3.1F;
//etc...
[/code]
这有什么好诡异的,浮点数就是这样
想要无限精度的浮点数用BigDecimal类
BigDecimal a=new BigDecimal("9.61");
BigDecimal类定义了各种数学运算,多数情况下满足需求
浮点类型(float和double)表示的小数是不精确的,具体原因网上你一搜,就答案一大把。