C# 四舍五入除法

C# rounding with division

这个程序计算一个事件在一段时间内发生的次数。 问题是,当我得到十进制数时,程序不会按我想要的方式四舍五入,例如:如果我除以 7/5,我得到 1,是否有可能得到 2? 'double' 答案产生:1.4.

static void Main(string[] args) {
    var kim = 7/5 ;
    Console.WriteLine(kim);
    Console.ReadKey();
}

我做的任何除法我都希望它四舍五入。

例如:7/5 = 1.4,但我希望它是2; 5/2 = 2.5,但我希望它是 3,等等

7/5是整数除法。它总是向下舍入。您将需要一个 double/decimal 分区和 Math.Ceiling 来汇总:

Math.Ceiling(7.0 / 5.0);  // return 2.0

如果您的输入值为 int,您必须至少将其中一个值转换为 double

Math.Ceiling((double)7 / 5);

正如 Jakub 所说,您可以使用 Math.Ceiling,或者另一种选择是使用模数。如果模数大于0,说明有余数,要加1,否则加0即可。

static void Main(string[] args)
{
    var kim = 7/5 + (7%5 > 0 ? 1 : 0);

    Console.WriteLine(kim);
    Console.ReadKey();
}