Android Math.sqrt返回0

时间:2015-10-13 19:20:37

标签: java android sqrt

this.promien = Math.sqrt(Math.abs((this.x * this.x) + (this.y * this.y)));

并且x = 0.965(...)y = -15.285(...)。当我试图解决这个问题时,这个abs被添加了。 this.promien总是0,我不知道为什么。我重新启动Android Studio,没有帮助。有什么我看不到的东西吗?

public class Pomiary {

    public Pomiary() {

    }


    public Pomiary(double x, double y, double z, Date data, int seria) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.data = data;
        this.promien = Math.sqrt(Math.abs((this.x * this.x) + (this.y * this.y)));
        this.suma = Math.abs(x) + Math.abs(y) + Math.abs(z);
        this.seria = seria;


    }
    @DatabaseField(generatedId = true)
    int id;

    @DatabaseField(dataType = DataType.DATE_STRING, format = "yyyy/MM/dd HH:mm:ss.SSS")
    Date data;

    @DatabaseField
    double x;

    @DatabaseField
    double y;

    @DatabaseField
    double z;

    @DatabaseField
    double suma;

    @DatabaseField
    int seria;

    @DatabaseField
    double promien;

我正在调试这个应用程序,这就是我知道它的0。当x和y不等于0时,对数据库的请求返回0。

Debug mode

我实例化的地方:

if (MainActivity.pomiary) {
double promien  = Math.sqrt(Math.pow(X,2) + Math.pow(Y,2));
                    Pomiary pomiary = null;
                    try {
                        pomiary =
                                new Pomiary(X, Y, Z,
                                        dateFormat.parse(dateFormat.format(new Date())), iloscZapisanychSeriiWBazie);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }

x,y,z是磁力计的值

1 个答案:

答案 0 :(得分:0)

您不需要abs,因为z * z始终是非负的,并且您正在添加两个非负数。你不可能得到零,因为其中一个产品是负面的。很高兴看到你如何创建这个对象。

如果我这样定义Pomiary

public class Pomiary {
  double xx;
  double yy;
  double zz;
  Date dataa;
  double promien;
  double suma;
  int seria;

  public Pomiary()
  {

  }
    public Pomiary(double x, double y, double z, Date data, int seria) 
    {
        this.xx = x;
        this.yy = y;
        this.zz = z;
        this.dataa = data;
        this.promien = Math.sqrt(this.xx * this.xx + yy * this.yy);
        this.suma = Math.abs(x) + Math.abs(y) + Math.abs(z);
        this.seria = seria;
        System.out.println(this.promien);
    }

并称之为:

public class JavaLab23{

    public static void main(String[] args) {

      Pomiary p = new Pomiary(3,4,5,null,0);
      System.out.println(p.promien);
    }

}

我得到非零输出。