0

下面是我正在使用的代码。

我希望输出为 1.65,但我得到 0。

这似乎是一个范围问题。但是我已经将变量声明t为静态,那么为什么输出仍然是 0?

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public static double t;

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 100; i = i + 1)
            {
                t = (i * (1 / 60));
            }
            MessageBox.Show(Convert.ToString(t));
        }
    }
}
4

3 回答 3

10

1 / 60将始终为 0。

你正在做整数除法

double在除法运算中,如果您想要一个double结果,您至少需要一个操作数。

改变:

t = (i * (1 / 60));

到:

t = (i * (1 / 60D));

或者:

t = (i * (1D / 60));

将解决问题。

于 2013-02-17T21:59:36.273 回答
4

当你除整数值时,你得到一个整数。1 / 60产生零。将操作数之一转换为 double(double)1/60以获得正确的 double 结果。或者,当您在这种情况下使用常量时,您可以使用双字面量而不是整数字面量。

于 2013-02-17T21:59:45.987 回答
2

为什么你做 100 个部门但只显示一次消息框?它与以下内容相同:

t = (99 * (1 / 60));
MessageBox.Show(Convert.ToString(t));
于 2013-02-17T22:01:15.410 回答