我在NetBeans中执行一个简单的GUI程序来查找圆圈区域。 我使用双数据类型,但答案不正确。 声明:
double area = (22/7)*r*r;
//r is the radius.
当我输入r的值为4时,答案是48.0。 为什么没有得到正确的小数点?
答案 0 :(得分:3)
再次
int
除以int
会产生int
值
然后22/7=3
所以3*4*4=48
更改为
double area = (22/7.0)*r*r;
System.out.println(area);
Out put:
50.285714285714285
但最好的方法是使用Math.PI
代替22/7
double area = Math.PI*4*4;
System.out.println(area);
答案 1 :(得分:1)
原生int
上的算术运算符将始终返回int
。然后将结果转换为double
,这就是为什么它没有小数部分。
您可以使用以下方法修复代码:
double area = (22.0/7.0)*r*r;
答案 2 :(得分:1)
为什么你在22/7挣扎?使用Math.PI
在您的情况下,只需使用 MATH.PI 操作,如下所示
double area = Math.PI * r * r;
<强> You can find the all java.lang.Math
package examples here 强>
Math类包含执行基本数值运算的方法,如基本指数,对数,平方根和三角函数。
与StrictMath类的某些数值方法不同,类Math的等效函数的所有实现都未定义为返回逐位相同的结果。这种放松允许在不需要严格再现性的情况下实现性能更好的实施。
答案 3 :(得分:0)
因为右侧评估为int
,然后正在转换为double
。
这样做
double area = (22.0/7.0)*r*r;