添加或减少双打会产生错误的结果

时间:2015-10-31 12:25:29

标签: java arrays double addition operation

if (CIElchOpposite[2] < 180.0) {
    CIElchOpposite[2] = CIElchOpposite[2] + 180;
} else {
    CIElchOpposite[2] = CIElchOpposite[2] - 180;
}

对于给定的CIElchOpposite[2] = 82;,返回结果为180时应为262

CIELchOppositedouble []

它应该非常简单,但无论操作是否正确完成 这是整个方法,将CIELab颜色映射到CIELch空间,计算相反的颜色(仅添加或减去180º)然后将其转换回CIELab。已独立检查映射并正常工作。

double CIElch[] = MapFromCIElabtoCIElch
            .mapLabToLch(inputColorOneCIELAB);
    double CIElchOpposite[] = new double[3];
    CIElchOpposite[0] = CIElch[0];
    CIElchOpposite[1] = CIElch[1];

    if (CIElchOpposite[2] < 180.0) {
        CIElchOpposite[2] = CIElchOpposite[2] + 180;
    } else {
        CIElchOpposite[2] = CIElchOpposite[2] - 180;
    }

    double[] CIElabOpposite = new double[3];
    CIElabOpposite = MapFromCIElabtoCIElch.mapLchToLab(CIElchOpposite);

2 个答案:

答案 0 :(得分:1)

在if语句

之前,永远不会为

x分配任何值

也许你的意思是

CIElchOpposite[2]

注意Java使用camelCase,例如if (CIElch[2] < 180.0) { CIElchOpposite[2] = CIElch[2] + 180; } else { CIElchOpposite[2] = CIElch[2] - 180; } cielchOpposite

答案 1 :(得分:0)

double在内部存储为二进制的分数,因此0.123这样的值不能以二进制格式表示,这就是为什么你从算术中得到错误的输出

使用BigDecimal BigDecimal bigDecimal = new BigDecimal(b) 做你的哮喘病,然后如果你愿意那么将值返回为双倍

bigDecimal.doubleValue()

除了CIElchOpposite[2]从未被分配

之外