【问题标题】:Dividing by a higher number returning 0除以更大的数字返回 0
【发布时间】:2012-10-03 22:58:16
【问题描述】:

当我尝试这样做时

double test = ((2 / 7) * 100);

它返回 0。

有人知道这是为什么以及如何解决吗?

谢谢

【问题讨论】:

  • 因为是整数除法。
  • 我见过的最快的一连串答案。请记住,您可以使用“d”来表示双打,例如:((2d / 7d) * 100)

标签: c#


【解决方案1】:

2 / 7 是整数除法,将返回 0。试试这个吧

2.0 / 7

(double) 2 / 7

【讨论】:

    【解决方案2】:

    你在除法整数

    如果您想要非整数结果,则至少一个操作数必须是浮点数或双精度数(或小数)。

    您可以通过将.00 添加到任何文字来创建文字。

    【讨论】:

      【解决方案3】:

      您正在除整数,所以2 / 7 已经变成0。试试2.0 / 7.0,你会得到正确的结果。

      【讨论】:

        【解决方案4】:

        它在做整数除法,因为所有的操作数都是整数。

        要修复它,请至少将一个操作数更改为双精度数,如下所示:

        double test = ((2.0 / 7.0) * 100.0);
        

        【讨论】:

          【解决方案5】:

          您正在做整数数学运算,只有在得到最终结果时才转换为 double

          2 / 7 = 0
          

          同时

          2.0 / 7.0 = 0.285714285714285
          

          double 值做数学运算:

          double test = ((2.0 / 7.0) * 100.0);
          

          【讨论】:

            【解决方案6】:

            这是因为分裂。两个 int 数相除返回截断任何小数点的 int 数。因此,运算 2/7 的结果将为 0。

            应该是这样的:

            双重测试 = ((2.0 / 7.0) * 100.0);

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-03-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多