2015-01-02 5 views
-2

У меня есть следующий расчет в Java:Расчет в Java

rightMotor = (int) (((double)speed)/((double)100)*rightMotor)); 

Скорость и rightMotor являются целыми числами. Проблема в том, что она продолжает возвращаться 0. Я попытался заставить делить скорость и 100 как двойные, которые не имели разных результатов. Может ли кто-нибудь дать мне некоторое представление об этом?

Заранее спасибо.

+5

Какие значения '' speed' и rightMotoer'? – Mureinik

+0

скорость составляет от 1 до 100. rightMotor - 1024. – user3426706

+3

Точно, если результат находится между -0,5 и 0,5, то литиевая его при int приведет к 0. –

ответ

2

Причина, по которой вычисление возвращает ноль, состоит в том, что значение double, вычисленное выражением, меньше единицы.

Похоже, что вы поместили круглые скобки неправильно - в настоящее время, вы разделите speed от ста раз rightMotor, который связан с получением значения меньше 1.

Вам необходимо исправить формулу, чтобы она работала. Если вы хотите, чтобы вычислить speed/100 * rightMotor, как если бы это была математика формула, вы могли бы сделать умножение перед делением, избегая double сек в целом:

rightMotor = speed * rightMotor/100; 
1

Поскольку вы присваиваете результат в переменную INT, нет никакого смысла делая разделение с плавающей запятой.

rightMotor = speed/(100*rightMotor); 

даст вам тот же результат, который был бы 0, если speed < 100*rightMotor.

Если ваше намерение состояло в том, чтобы умножить speed/100 на rightMotor, вам все равно не нужно бросать двойное, а затем обратно в int.

Вобще:

rightMotor = (speed*rightMotor)/100;