添加或减去双打给出错误的结果
adding or substracting doubles gives wrong result
if (CIElchOpposite[2] < 180.0) {
CIElchOpposite[2] = CIElchOpposite[2] + 180;
} else {
CIElchOpposite[2] = CIElchOpposite[2] - 180;
}
对于给定的 CIElchOpposite[2] = 82;
,return 结果是 180
,而它应该是 262
。
CIELchOpposite
是 double []
。
应该很容易,但是怎么操作都不对。
这是整个方法,将 CIELab 颜色映射到 CIELch space,计算相反的颜色(只需添加或减去 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);
double 在内部存储为二进制的分数,因此 0.123 之类的值不能用二进制格式表示,这就是算术输出错误的原因
改为使用 BigDecimal
BigDecimal bigDecimal = new BigDecimal(b)
做你的哮喘患者,然后 return 如果你愿意,可以将值加倍
bigDecimal.doubleValue()
除此之外 CIElchOpposite[2]
从未被分配过
CIElchOpposite[2]
在 if 语句
之前从未被赋值
也许你的意思是
if (CIElch[2] < 180.0) {
CIElchOpposite[2] = CIElch[2] + 180;
} else {
CIElchOpposite[2] = CIElch[2] - 180;
}
注意 Java 使用驼峰式命名,例如 cielchOpposite
和 cieLch
if (CIElchOpposite[2] < 180.0) {
CIElchOpposite[2] = CIElchOpposite[2] + 180;
} else {
CIElchOpposite[2] = CIElchOpposite[2] - 180;
}
对于给定的 CIElchOpposite[2] = 82;
,return 结果是 180
,而它应该是 262
。
CIELchOpposite
是 double []
。
应该很容易,但是怎么操作都不对。
这是整个方法,将 CIELab 颜色映射到 CIELch space,计算相反的颜色(只需添加或减去 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);
double 在内部存储为二进制的分数,因此 0.123 之类的值不能用二进制格式表示,这就是算术输出错误的原因
改为使用 BigDecimal
BigDecimal bigDecimal = new BigDecimal(b)
做你的哮喘患者,然后 return 如果你愿意,可以将值加倍
bigDecimal.doubleValue()
除此之外 CIElchOpposite[2]
从未被分配过
CIElchOpposite[2]
在 if 语句
也许你的意思是
if (CIElch[2] < 180.0) {
CIElchOpposite[2] = CIElch[2] + 180;
} else {
CIElchOpposite[2] = CIElch[2] - 180;
}
注意 Java 使用驼峰式命名,例如 cielchOpposite
和 cieLch