if (CIElchOpposite[2] < 180.0) {
CIElchOpposite[2] = CIElchOpposite[2] + 180;
} else {
CIElchOpposite[2] = CIElchOpposite[2] - 180;
}
对于给定的CIElchOpposite[2] = 82;
,返回结果为180
时应为262
。
CIELchOpposite
是double []
。
它应该非常简单,但无论操作是否正确完成 这是整个方法,将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);
答案 0 :(得分:1)
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]
从未被分配