代码之家  ›  专栏  ›  技术社区  ›  Adan

C#带除法的舍入[副本]

  •  5
  • Adan  · 技术社区  · 9 年前

    该程序计算一个事件在一段时间内发生的实例数。 问题是,当我得到十进制数时,程序不会按照我希望的方式取整,例如:如果我除以7/5,我得到1,有可能得到2吗?“双重”答案为: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,以此类推。

    2 回复  |  直到 9 年前
        1
  •  9
  •   Jakub Lortz    9 年前

    7/5 是整数除法。它会一直向下四舍五入。你需要一个 double / decimal 分区和 Math.Ceiling 四舍五入:

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

    如果您的输入值是 int s、 你至少要投一个 双重的

    Math.Ceiling((double)7 / 5);
    
        2
  •  3
  •   Leejay Schmidt    9 年前

    正如雅库布所说,你可以使用 Math.Ceiling ,或者另一个选项是使用模。如果模大于0,则意味着存在一些余数,因此您需要添加1,否则,只需添加0。

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