C# 用C四舍五入一个数字#

C# 用C四舍五入一个数字#,c#,math,rounding,C#,Math,Rounding,我创建了一个认证系统,用户可以参加考试。在给考试打分时,我希望返回一个百分比,所以我取正确的题数,除以考试题数,再乘以100 我的问题是把数字四舍五入。所以,如果返回的数字是76.9,我的代码给我76,四舍五入应该是77,等等 这是一行代码,我正在解决这个问题 int userScorePercentageConvert = (int)decimal.Round((correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100)

我创建了一个认证系统,用户可以参加考试。在给考试打分时,我希望返回一个百分比,所以我取正确的题数,除以考试题数,再乘以100

我的问题是把数字四舍五入。所以,如果返回的数字是76.9,我的代码给我76,四舍五入应该是77,等等

这是一行代码,我正在解决这个问题

int userScorePercentageConvert = (int)decimal.Round((correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100), MidpointRounding.AwayFromZero);
谁能告诉我如何修改这段代码,使其正确舍入

i、 e.43.4=44 | 67.7=68 | 21.5=22


非常感谢。

您只需做
数学。天花板(43.4)
我相信您正在寻找


这将为您提供
44

只需在您的号码上添加.5,然后再施放该号码

问题在于您正在使用:

(correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100)
在这种情况下,使用整数除法,结果总是0或100

这将有助于:

(100.0 * correctQuestionsForAttempt.Count / dvAttemptQuestions.Count)
此外,根据您的描述,您需要的是一个函数(可以将其视为向上舍入),而不是一个
舍入
(舍入到最接近的整数,并提供如何舍入中点值的选项)


这不是一个取整问题;这是一个数字型问题

集合的
.Count
属性(我假设这就是
correctQuestionsFattPent
dvAttemptQuestions
的属性)是
int
。将
int
除以
int
将得到另一个
int
,没有小数点。像这样截断小数点会出现向下舍入的现象。结果是,对
decimal.Round
的调用试图对已经是整数的内容进行四舍五入

如果在除以总数之前将正确数字乘以100,则应更正此问题。

您需要Math.天花板()-请参阅

在您的上下文中,它将按如下方式使用:

int userScorePercentageConvert = (int)Math.Ceiling((correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100));

只是一个猜测,试着抛出正确的问题。在除法之前数到a(双)。
int userScorePercentageConvert = (int)Math.Ceiling(100.0 * correctQuestionsForAttempt.Count / dvAttemptQuestions.Count);
int userScorePercentageConvert = (int)Math.Ceiling((correctQuestionsForAttempt.Count / dvAttemptQuestions.Count * 100));