Java Double无法解除引用

时间:2016-09-03 20:59:44

标签: java bigdecimal

我需要乘以radius*radius*pi找到圆圈的确切区域,但我写下的代码无效。这是继续给予双倍不能被解除引用的错误...

ERROR

 ----jGRASP exec: javac -g Circle.java
Circle.java:7: error: double cannot be dereferenced
      BigDecimal area = radius.multiply(pi);
                              ^
1 error

CODE

import java.math.*;
public class Circle {
   public BigDecimal findArea(double radius){
      double pi = 3.14159;
      radius = radius * radius;
      BigDecimal bd = new BigDecimal("1");
      BigDecimal area = pi.multiply(radius);
      return area;
   }
}

2 个答案:

答案 0 :(得分:5)

解除引用不适用于基本类型。 double是原始类型。

因此

pi.multiply(radius)

是无效的表达。

您可以使用以下内容:

BigDecimal area = BigDecimal.valueOf(pi).multiply(BigDecimal.valueOf(radius));

或者

BigDecimal area = BigDecimal.valueOf(pi*radius);

代替。

答案 1 :(得分:2)

piradius是双基本类型,这意味着它们无法解除引用,您无法使用multiply之类的方法。试试这个:

BigDecimal area = BigDecimal.valueOf(pi * radius);

或者:

BigDecimal area = BigDecimal.valueOf(Math.PI * radius);

在示例中,我将pi替换为Math.PI,因为它内置于Java并且更精确。上面的代码采用Math.PI * radius的值并将其转换为BigDecimal