以下是我正在使用的代码。
我希望输出为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));
}
}
}
答案 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));