可能丢失精度误差

时间:2013-11-16 15:53:13

标签: java

我有这个问题我正在制作一个三角形类并且在行中的一个代码中说int [] y coord我得到这个编译器错误,说明可能丢失精度所需int找到double但是我试图添加正方形root(3)/ 2到我的get()y所以这不会是双倍。

帮助表示赞赏。

import java.awt.*;

public class Triangle extends Shape {
    private int leng;

    public Triangle(int x, int y, Color color, int leng) {
        super(x, y, color);
        this.leng=leng;
    }

    public void draw(Graphics g) {
        int[]Xcoord={getX(),getX()+leng,getX()+leng/2};
        int[]Ycoord={getY(),getY(),getY()+Math.sqrt(3)/(2.0)};
        g.drawPolygon(Xcoord,Ycoord,3);
    }

    public int getHeight() {
        return leng;
    }

    public int getWidth() {
        return leng;
    }
}

2 个答案:

答案 0 :(得分:0)

3的平方根不能表示为整数,因为它的不是整数。制作数组double[]

double[] Xcoord = { getX(), getX() + leng, getX() + leng / 2.0};
double[] Ycoord = { getY(), getY(), getY() + Math.sqrt(3) / (2.0)};

顺便说一句,建议使用空格来帮助提高可读性,因为我在我给出的代码中进行了修改。

答案 1 :(得分:0)

你的公式也不正确。单独加倍不会解决它:

    double [] Xcoord = { getX(), (getX()+leng), getX()+leng/2 );
    double [] Ycoord = { getY(), getY(), getY()*(1.0+Math.sqrt(3)/(2.0)) };