【问题标题】:Divide by 3 and Round up (If need be) C#除以 3 并向上取整(如果需要) C#
【发布时间】:2012-08-05 05:22:41
【问题描述】:

在我的游戏中,我必须实现一个功能,将一个数字除以 3 并使其成为一个整数。即不是 3.5 或 2.6 等....

应该是一个整数,比如 3 或 5。

有人知道我该怎么做吗?

【问题讨论】:

    标签: c# divide


    【解决方案1】:
    Math.Round(num / 3);
    

    Math.Ceiling(num / 3);
    

    Math.Truncate(num / 3);
    

    【讨论】:

    • 这对我有用:gameManager.maxTries = (int)Math.Ceiling((double)gameManager.GameLevelImages[gameManager.GameLevel] / 3);谢谢
    • 知道num 是否为整数非常重要。如果num 是浮点类型(或decimal),那么上面的答案是有道理的。另一方面,如果num 是整数类型,如int,则除法将已经截断以返回整数结果。为避免这种情况,请将分母写为3.0 而不仅仅是3将分子或分母转换为double(如上面的评论)。
    • @JeppeStigNielsen 没错,我的假设是他/她正在处理浮点数。
    【解决方案2】:

    除以三和四舍五入可以用数学函数完成:

    int xyzzy = Math.Ceiling (plugh / 3);
    

    或者,如果输入是整数,则根本没有函数:

    int xyzzy = (plugh + 2) / 3;
    

    这也可以用更通用的方式完成,“除以n,四舍五入”:

    int xyzzy = (plugh + n - 1) / n;
    

    Ceiling 函数用于显式四舍五入(朝向正无穷大)。舍入还有许多其他变体(下限、截断、舍入到偶数、从零舍入等),可以在in this answer 找到。

    【讨论】:

    • 更一般地说,int xyzzy = (plugh + n - 1) / n; + n 强制四舍五入,而 - 1 避免它在完美分割时四舍五入。
    【解决方案3】:

    找到this,它说如果你把数字除,加二,再除以三,你会得到正确的答案。例如,7/3 = 2.3,但 (7+2)/3 = 3。

    【讨论】:

    • 感谢您提出这个问题!绝对值得牢记这一点。
    • 非常感谢雅各布。真的很感激!
    • 这是个好办法。但仅当要除的数字是整数类型时。对于整数类型,除法/ 以不同的方式完成,这使得它可以工作。
    猜你喜欢
    • 2017-04-28
    • 1970-01-01
    • 2013-06-28
    • 2011-05-04
    • 2018-07-31
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多