算术运算:Int到Double

时间:2014-05-12 09:37:52

标签: c#

我在Windows应用程序中使用了2个文本框和一个按钮。

textBox1用于用户输入

textBox2显示算术运算的结果。

当用户单击按钮时,应执行以下操作:

1000 * textbox1.text / 60

对于我使用的

private void button1_Click(object sender, EventArgs e)
{
    int Result = 1000 * Convert.ToInt32(textBox1.Text) / 60;

    textBox2.Text = Result.ToString();
}

然而,我得到的值是一个整数,即使我希望它是一个双倍。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:8)

规则是:

  

当一个整数被另一个整数除时,算术执行为   整数运算。如果你希望它以float,double或者的形式执行   十进制算术,您需要适当地转换其中一个值。

所以这些都可行:

double Result = 1000 * Convert.ToDouble(textBox1.Text) / 60;
double Result = 1000 * Convert.ToInt32(textBox1.Text) / (double)60;
double Result = 1000 * Convert.ToInt32(textBox1.Text) / 60.0;

MSDN关于整数除法:

  

结果是number1除以number2的整数商。该   整数商丢弃任何余数并仅保留整数   部分。

答案 1 :(得分:3)

你应该在右侧至少有一双

double Result = 1000 * Convert.ToInt32(textBox1.Text) / 60.0;

附加说明:为了像这样的操作得到一个double,你必须给它至少一个double,否则右边的部分(1000 * Convert.ToInt32(textBox1.Text) / 60)将只是一个整数,然后转换通过左侧部分(double Result =)的隐式演员来加倍。

答案 2 :(得分:2)

您强制结果一直是整数:

int Result = 1000 * Convert.ToInt32(textBox1.Text) / 60;

你应该强制Result为Double,并强制两个操作数加倍:

 double Result = 1000 * Convert.ToDouble(textBox1.Text) / 60d;

(60d代表(double)60 - 我更喜欢使用类型后缀而不是强制转换,但它是相同的)

相关问题