我在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();
}
然而,我得到的值是一个整数,即使我希望它是一个双倍。
我该如何解决这个问题?
答案 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 - 我更喜欢使用类型后缀而不是强制转换,但它是相同的)