为什么这不起作用?

时间:2013-02-17 21:58:27

标签: c# for-loop static scope

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

我希望输出为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));
        }
    }
}

3 个答案:

答案 0 :(得分:10)

1 / 60将始终为0.

你正在做integer division

在除法运算中,如果需要double结果,则至少需要有一个操作数为double

更改:

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

要:

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

或者:

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

将解决问题。

答案 1 :(得分:4)

分割整数值时,会得到一个整数。 1 / 60产生零。将其中一个操作数强制转换为加倍(double)1/60以获得正确的双重结果。或者,当你使用像这种情况一样的常量时,你可以使用双重文字而不是整数文字。

答案 2 :(得分:2)

为什么你要做100个分区但只显示一次消息框?它与:

相同
t = (99 * (1 / 60));
MessageBox.Show(Convert.ToString(t));