C# 使用除法进行四舍五入

14 浏览
0 Comments

C# 使用除法进行四舍五入

这个程序计算在一定时间内事件发生的次数。

问题在于当我得到小数时,程序不能按照我希望的方式四舍五入,例如:如果我计算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,等等。

0
0 Comments

C# 在进行除法运算时会进行整数除法,结果会向下取整。如果需要向上取整,可以使用 double/decimal 类型进行除法运算,并使用 Math.Ceiling 方法进行向上取整操作。

如果输入的值是 int 类型,需要将其中至少一个值强制转换为 double 类型。

变量 my variables 的值是 7 和 5,如何将它们转换为小数形式?将它们进行强制转换即可。我已将转换后的代码加入到答案中。

完整代码如下:

Math.Ceiling(7.0 / 5.0);  // 返回 2.0
Math.Ceiling((double)7 / 5);

这样就可以得到正确的向上取整结果了。

0
0 Comments

在C#中进行除法运算时,可能会出现舍入错误的情况。这意味着当除法结果有小数部分时,C#默认会向下舍入到最近的整数。然而,在某些情况下,我们可能希望向上舍入到最近的整数。

为了解决这个问题,有几种方法可以使用。一种方法是使用Math.Ceiling方法,它会将小数向上舍入到最近的整数。另一种方法是使用模运算。如果模运算的结果大于0,则说明有余数,因此需要加1;否则,只需加0。

下面是一个使用模运算的示例代码:

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

运行这段代码,将得到2作为输出结果。这是因为7除以5的结果是1.4,向下舍入后为1,再加上模运算的结果为2,所以最终的结果是2。

通过使用模运算,我们可以实现向上舍入的效果,从而解决了C#默认向下舍入的问题。

0