使用C#舍入数字

And*_*ick 4 c# math rounding

我创建了一个认证系统,用户可以参加考试.在标记考试时,我希望返回百分比数字.所以我把正确的问题数字除以考试中的问题数量并乘以100.

我的问题是将数字四舍五入.所以如果返回的数字是76.9我的代码给了我76,其中四舍五入应该是77等.

这是我正在解决的代码行...

int userScorePercentageConvert = (int)decimal.Round((correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100), MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何修改这段代码,以便正确地舍入

即43.4 = 44 | 67.7 = 68 | 21.5 = 22

提前谢谢了.

Hab*_*bib 6

我相信你在找 Math.Ceiling

decimal number = 43.4M;
int roundedNumber = (int) Math.Ceiling(number);
Run Code Online (Sandbox Code Playgroud)

那会给你 44


Tim*_* S. 6

问题是你在这里使用整数除法:

(correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100)
Run Code Online (Sandbox Code Playgroud)

在这种情况下使用整数除法,您总是会得到0或100.

这将有效:

(100.0 * correctQuestionsForAttempt.Count / dvAttemptQuestions.Count)
Run Code Online (Sandbox Code Playgroud)

此外,根据您的描述,您需要一个Ceiling函数(将其视为四舍五入),而不是Round(舍入到最接近的整数,以及如何舍入中点值的选项).

int userScorePercentageConvert = (int)Math.Ceiling(100.0 * correctQuestionsForAttempt.Count / dvAttemptQuestions.Count);
Run Code Online (Sandbox Code Playgroud)