早教吧 育儿知识 作业答案 考试题库 百科 知识分享

java中返回类型为double()的方法体定义为return3.14*r*r,结果却得到了32.15360095825196半径为3.2f,面积和周长得到多余的精度,但是半径为5.5f,这是为什么-------------------------------------------------------

题目详情
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);是多少……