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になります。

整数除算を行っています。

除算演算では、結果が必要な場合は、少なくとも1つのオペランドが必要doubleですdouble

変化:

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

に:

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

または:

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

問題を解決します。

于 2013-02-17T21:59:36.273 に答える
4

整数値を除算すると、整数が得られます。1 / 60ゼロを生成します。オペランドの1つをdoubleにキャスト(double)1/60して、正しいdoubleの結果を取得します。または、この場合のように定数を使用している場合は、整数リテラルの代わりに二重リテラルを使用できます。

于 2013-02-17T21:59:45.987 に答える