簡體   English   中英

不需要的數字計算結果

[英]Unwanted number calculation result

好的,我正在編寫一個程序,根據用戶希望的數量為用戶提供一組方程式。 運行后,用戶回答所有問題,生成報告。 我的報告代碼很簡單:

public void report(){
    percent = (totalCorrect / numberOfQuestions) * 100;
    totalTime = (endTime - startTime) / 1000;
    System.out.println("Report:");
    System.out.println("Questions Answered: " + numberOfQuestions);
    System.out.println("Total Correct: " + totalCorrect);
    System.out.println("Total Incorrect: " + totalIncorrect);
    System.out.println("Percent: " + percent + "%");
    System.out.println("Time taken: " + totalTime + " seconds");
}

但結果是:

Report:
Questions Answered: 2
Total Correct: 1
Total Incorrect: 1
Percent: 0.0%
Time taken: 2 seconds

這是正確的,我故意回答一個正確和一個錯誤。 我的問題是百分比總是0.0%,除非我把它們弄好,在這種情況下它是100%。 我不明白我做錯了什么。 它記錄了正確答案的正確數量(基於“總校正:”輸出)和問題數量。 顯然,我的百分比方程是正確的。 任何幫助將非常感激!

如果你的程序中totalCorrectnumberOfQuestionsint ,那么你很可能已經執行了整數除法。 在Java中的整數除法中,結果也必須是int因此結果將被截斷。

在執行除法之前將其中一個變量轉換為double ,因此Java將首先執行浮點除法。

percent = ((double) totalCorrect / numberOfQuestions) * 100;

正如其他人所指出的那樣,你可能正在進行整數除法。

您的變量totalCorrectnumberOfQuestions一個或兩個必須是double,至少在計算時是這樣。

嘗試這個:

percent = ((double)totalCorrect / numberOfQuestions) * 100;

Maulzey提供了另一個不會從int轉換為double的好選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM