Получение 0 при попытке вычислить наклон

1

Вот конкретное уравнение, которое дает мне 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, и они верны.

  • 0
    Таким образом, все переменные в правой части уравнения являются целыми числами?
  • 3
    Вы выполняете целочисленное деление.
Показать ещё 3 комментария
Теги:
math
zero
int

1 ответ

4
Лучший ответ

Вы выполняете целочисленное деление в Java, где математика, выполненная с использованием int должна давать int, поэтому деление усекает все, что находится за пределами десятичной точки. Это означает, что в Java -2/5 равно 0. Недостаточно того, чтобы цель задания была double. Один из операндов должен быть double (или float), чтобы заставить арифметику с плавающей запятой.

Передайте один из операндов оператору / в double чтобы заставить арифметику с плавающей запятой.

slope2 = ( (double) (yVals[i+2] - originY) / (xVals[i+2] - originX));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню