作业帮 > 综合 > 作业

java中返回类型为 double( )的方法体定义为 return 3.14*r*r,结果却得到了32.1536009

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 03:00:58
java中返回类型为 double( )的方法体定义为 return 3.14*r*r,结果却得到了32.15360095825196
半径为3.2f,面积和周长得到多余的精度,但是半径为5.5f,这是为什么
-------------------------------------------------------------
import java.math.*;
public class Circle
{
\x05private float r;
\x05Circle()
\x05{
\x05}
\x05Circle (float x)
\x05\x05{
\x05\x05r=x;
\x05\x05}
\x05public void set_value(float x)
\x05{
\x05\x05r=x;
\x05}
\x05public double mj()
\x05\x05{
\x05\x05return(3.14*r*r);
\x05\x05}
public double zc()
{
\x05 double y;
y=2*3.14*r;
return(y);
}
public static void main(String args[])
{ Circle ex1=new Circle();
ex1.set_value(3.2f);
System.out.println("面积="+ex1.mj()+"周长="+ex1.zc());
Circle ex2=new Circle(5.5f);
System.out.println("面积="+ex2.mj()+"周长="+ex2.zc());
}
}
-------------------------------------------------------------------------------
---------- java ----------
面积=32.15360095825196周长=20.096000299453735
面积=94.985周长=34.54
输出完成 (耗时 0 秒) - 正常终止
二进制的精度问题,你可以试下System.out.println(1-0.9);是多少……