2013-08-20 3 views
0

Я пишу Android приложения и у меня есть алгоритм, чтобы вычислить некоторый балл из нескольких переменных, но при вычислении, я получаю неправильный ответ:Получения неверного значения при умножении

я получаю 10300, когда я установил мв, PTV, txtv до 10, тогда как я должен получить 100. Когда я устанавливаю его в 1, я получаю 300 в качестве ответа.

int f; 
f = (((mv*ptv*txtv)/10^3)*100); 
int finalScr = f; 
TextView scoreView = (TextView)findViewById(R.id.textView3); 
scoreView.setText(Integer.toString(finalScr)); 

Все переменные являются целыми числами, а максимальное значение всех переменных 10 и минимум 1.

Пожалуйста, помогите .. Я не думаю, что я математически неправильно: P

+2

Как сказано в ответах вы должны использовать 'Math.pow()', но вы также можете упростить математику и просто разделить на 10 и не умножить на 100. Так как 10^3 = 1000 и 100/1000 = 1/10. –

ответ

12

^ не является оператором сотовой связи в Java. Это оператор XOR.

Вы должны использовать Math.pow(10, 3) для этого:

f = (int)(((mv*ptv*txtv)/Math.pow(10, 3))*100); 

напечатанный материал для int необходим, так как результат Math.pow является double типа.

+0

, хотя ваш ответ правилен в отношении проблемы, если suyash srijan использует целые числа, это не то же самое, что делить на 10 или делить на 1k и размножаться после этого. пусть mv, ptv равно 10 и txtv - 49 - деление на 1000 до умножения на 10 должно быть 400, а деление на 10 без умножителя должно быть 490 –

+0

@ChristianR. Ах! ты прав. Будет редактировать эту часть :) –

3

^не является экспоненциальным оператором. Его оператор xor. Вы должны сделать это

f = (((mv*ptv*txtv)/(10*10*10))*100); 
Смежные вопросы