Вот конкретное уравнение, которое дает мне 0, когда он должен давать мне -0.4 (-2/5)
slope2 = ((yVals[i+2] - originY) / (xVals[i+2] - originX));
(-2 - 0)/(2 + 3)
slope2 - двойной
yVals [] - массив int
origin - int
Почему он продолжает возвращаться 0? Я знаю, что переменные вызываются правильно, потому что я сделал println на разных vals, и они верны.
Вы выполняете целочисленное деление в Java, где математика, выполненная с использованием int
должна давать int
, поэтому деление усекает все, что находится за пределами десятичной точки. Это означает, что в Java -2/5
равно 0
. Недостаточно того, чтобы цель задания была double
. Один из операндов должен быть double
(или float
), чтобы заставить арифметику с плавающей запятой.
Передайте один из операндов оператору /
в double
чтобы заставить арифметику с плавающей запятой.
slope2 = ( (double) (yVals[i+2] - originY) / (xVals[i+2] - originX));