【问题标题】:C# Math division not correct [duplicate]C#数学除法不正确[重复]
【发布时间】:2012-09-11 22:39:38
【问题描述】:

可能重复:
Division returns zero
simple calculation not working for some reason

为什么会这样:

int prozent = (totalkcals / 2000) * 100;

返回 0?

totalkcals 在这种情况下是 567,我仔细检查了它。

【问题讨论】:

    标签: c# math division


    【解决方案1】:

    这是因为integer division

    除法将结果向零舍入,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数。当两个操作数的符号相同时,结果为零或正,当两个操作数的符号相反时,结果为零或负

    【讨论】:

      【解决方案2】:

      这是因为整数除法。

      double prozent = ((double)totalkcals / 2000) * 100;
      

      【讨论】:

        【解决方案3】:

        567 / 2000 = 0.2835,当转换为 int(由您的数据类型指定)时变为零。 0 * 100 = 0。

        所以:double prozent = ((double)totalcals / 2000.0) * 100.0;

        【讨论】:

          【解决方案4】:

          因为是整数计算,所以(totalkcals / 2000)的运算返回0;

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-27
            • 1970-01-01
            • 1970-01-01
            • 2017-06-28
            • 2014-11-08
            • 2013-07-19
            • 1970-01-01
            相关资源
            最近更新 更多