Double数据类型不返回十进制值(Java)

时间:2014-08-07 12:17:23

标签: java double

我在NetBeans中执行一个简单的GUI程序来查找圆圈区域。 我使用双数据类型,但答案不正确。 声明:

 double area = (22/7)*r*r; 
 //r is the radius.

当我输入r的值为4时,答案是48.0。 为什么没有得到正确的小数点?

4 个答案:

答案 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

java.lang.Math

的Java 1.6文档
  

Math类包含执行基本数值运算的方法,如基本指数,对数,平方根和三角函数。

     

与StrictMath类的某些数值方法不同,类Math的等效函数的所有实现都未定义为返回逐位相同的结果。这种放松允许在不需要严格再现性的情况下实现性能更好的实施。

答案 3 :(得分:0)

因为右侧评估为int,然后正在转换为double


这样做

double area = (22.0/7.0)*r*r;