2013-08-20 45 views
0

當我寫一個Android應用程序,我有一個算法,計算出一些得分了幾個變量,但計算的時候,我得到錯誤的答案:獲得錯誤的值乘以

我得到10300當我設置MV,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

^不是指數運算符。它是一個異或運算符。你需要使它

f = (((mv*ptv*txtv)/(10*10*10))*100);