Я caluclating разницу между двумя цветовыми гистограмм, которые являются 3 двумерными массивами:Почему оператор * дал неверный результат и Math.pow() правильно
deltaH
является double
.
int[][][] t1 = item.getCh();
int[][][] t2 = comparedItem.getCh();
for(int i = 0; i < t1.length; i++)
for(int j = 0; j < t1[i].length; j++)
for(int p = 0; p < t1[i][j].length; p++)
deltaH = deltaH + ((t1[i][j][p] - t2[i][j][p]) * (t1[i][j][p] - t2[i][j][p]));
В результате этого выше, я получил отрицательные числа, которые математически невозможны. Когда вместо того, чтобы с помощью *
я использовал метод Math.pow():
int[][][] t1 = item.getCh();
int[][][] t2 = comparedItem.getCh();
for(int i = 0; i < t1.length; i++)
for(int j = 0; j < t1[i].length; j++)
for(int p = 0; p < t1[i][j].length; p++)
deltaH = deltaH + Math.pow(t1[i][j][p] - t2[i][j][p],2);
я получил правильные результаты. Почему это так?
Ваши номера не подходят в 'int'. – SLaks
@SLaks Тем не менее мы имеем x * x> = 0, даже если эти числа не имеют смысла. – Yoda
Каков тип 'deltaH'? – Szymon