2011-01-09 51 views
0

我想分割整數,但得到0作爲結果。我只是不明白我做錯了什麼。我在這個例子中只使用了int,但使用float或double獲得了相同的結果測試。除錯結果

我使用的代碼是:

int wrongAnswers = askedQuestions - playerResult; 
int percentCorrect = (playerResult/askedQuestions) * 100; 
int percentWrong = (wrongAnswers/askedQuestions) * 100; 


NSLog(@"askedQuestions: %i", askedQuestions); 
NSLog(@"playerResult: %i", playerResult); 
NSLog(@"wrongAnswers: %i", wrongAnswers); 
NSLog(@"percentCorrect: %i", percentCorrect); 
NSLog(@"percentWrong: %i", percentWrong); 
NSLog(@"calc: %i", (wrongAnswers + playerResult)); 
NSLog(@"wrong answers %: %i %%", ((wrongAnswers/askedQuestions) * 100)); 

結果我得到的是:

2011-01-09 16:45:53.411 XX [8296:207] askedQuestions:5
2011-01-09 16:45:53.412 XX [8296:207] playerResult:2
2011-01-09 16:45:53.412 XX [8296:207] wrongAnswers:3
2011-01-09 16:45 :53.413 XX [8296:207]%正確率:0%
2011-01-09 16:45:53.414 XX [8296:207] percent錯誤:0%
2011-01-09 16:45:53.414 XX [8296:207] calc:5
2011-01-09 16 :45:53.415 XX [8296:207]錯誤的答案:0%

我將非常感謝幫助:-)

回答

2

將分數轉換爲小數。 Int除以int將四捨五入爲0.

 
percentCorrect = ((decimal) playerResult/(decimal) askedQuestions) * 100; 
+4

或者只是以相反方式(乘,然後除)和保存演員:) – schnaader 2011-01-09 15:57:02

1

以及你正在使用INT存儲結果,這意味着如果分割率值像0.8這個值被截斷,你會得到0作爲答案

2

嘗試使用float數據類型,int被截斷。

7

您首先得到0(完全丟失數值)然後乘以它。你需要先乘,然後除。