简单的c#算法。winForms

简单的c#算法。winForms,c#,math,C#,Math,我在用c#进行简单的除法运算,我对它的复杂性有点困惑。下面是一些代码,在注释中是结果。(顺便说一句,如果你说我有5个相同变量的声明,我只编译了1行未注释) 所以如果你有一堆你想搞乱的整数,你必须把每一个都转换成一个双精度。非常乏味…2/3是两个整数的除法,它会截断任何余数。你可以做: double result = 2.0 / 3.0; 这将执行双除法 double.Parse设计用于将字符串转换为double,而不是整数(为此,您可以像(double)intVariable那样直接强制转换,

我在用c#进行简单的除法运算,我对它的复杂性有点困惑。下面是一些代码,在注释中是结果。(顺便说一句,如果你说我有5个相同变量的声明,我只编译了1行未注释)


所以如果你有一堆你想搞乱的整数,你必须把每一个都转换成一个双精度。非常乏味…

2/3
是两个整数的除法,它会截断任何余数。你可以做:

double result = 2.0 / 3.0;
这将执行双除法


double.Parse
设计用于将
字符串
转换为
double
,而不是整数(为此,您可以像
(double)intVariable
那样直接强制转换,或使用
convert.ToDouble(intVariable)
)。如果您想使用常数,只需将数字的格式设置为
2.0
,而不仅仅是
2

2/3
除以两个整数,这将截断任何余数。你可以做:

double result = 2.0 / 3.0;
这将执行双除法


double.Parse
设计用于将
字符串
转换为
double
,而不是整数(为此,您可以像
(double)intVariable
那样直接强制转换,或使用
convert.ToDouble(intVariable)
)。如果您想使用常量,只需将数字的格式设置为
2.0
,而不仅仅是
2

第一行返回0的原因是这是整数除法的标准行为。许多语言截断余数,C#就是其中之一


Double.Parse调用失败的原因是解析通常应用于字符串。解析整数值实际上没有意义。只需转换为double:
(double)2
第一行返回0的原因是这是整数除法的标准行为。许多语言截断余数,C#就是其中之一


Double.Parse调用失败的原因是解析通常应用于字符串。解析整数值实际上没有意义。只需转换为double:
(double)2

整数除法丢弃余数。您不需要使用
Convert.ToDouble
double.Parse
,只需编写:

double result = 2.0 / 3;

如果其中一个操作数是浮点值,则使用浮点算术而不是整数算术

要解释每一项:

// 2 / 3 = 0 with a remainder of 2; remainder is discarded
double result = 2 / 3;

// 2.0 / 3.0 = 0.6667, as expected
double result = Convert.ToDouble(2) / Convert.ToDouble(3);

// double.Parse takes a string parameter, so this gives a syntax error
double result = double.Parse(2) / double.Parse(3);

// As above, double.Parse takes a string, so syntax error
// This also does integer arithmetic inside the parentheses, so you would still
// have zero as the result anyway.
double result = double.Parse(2 / 3); // gives me errors

// Here, the integer division 2 / 3 is calculated to be 0 (throw away the
// remainder), and *then* converted to a double, so you still get zero.
double result = Convert.ToDouble(2 / 3);

希望这有助于解释。

整数除法丢弃余数。您不需要使用
Convert.ToDouble
double.Parse
,只需编写:

double result = 2.0 / 3;

如果其中一个操作数是浮点值,则使用浮点算术而不是整数算术

要解释每一项:

// 2 / 3 = 0 with a remainder of 2; remainder is discarded
double result = 2 / 3;

// 2.0 / 3.0 = 0.6667, as expected
double result = Convert.ToDouble(2) / Convert.ToDouble(3);

// double.Parse takes a string parameter, so this gives a syntax error
double result = double.Parse(2) / double.Parse(3);

// As above, double.Parse takes a string, so syntax error
// This also does integer arithmetic inside the parentheses, so you would still
// have zero as the result anyway.
double result = double.Parse(2 / 3); // gives me errors

// Here, the integer division 2 / 3 is calculated to be 0 (throw away the
// remainder), and *then* converted to a double, so you still get zero.
double result = Convert.ToDouble(2 / 3);

希望这有助于解释。

啊,谢谢很多人。我应该知道2/3被截断,因此得到0。。。。我还学到了。parse是用于字符串的。而且,我学到了可以键入(double)而不是Convert.ToDouble。谢谢guys@Adam罗宾逊:哎呀,那是个打字错误。它应该在没有
.0
的情况下说
(double)2
,以表示显式强制转换。希望我没有把别人搞糊涂,除了我自己!啊,谢谢很多人。我应该知道2/3被截断,因此得到0。。。。我还学到了。parse是用于字符串的。而且,我学到了可以键入(double)而不是Convert.ToDouble。谢谢guys@Adam罗宾逊:哎呀,那是个打字错误。它应该在没有
.0
的情况下说
(double)2
,以表示显式强制转换。希望我没有把别人搞糊涂,除了我自己!