C# 除以2整数,在C中得到一个双精度
我是初学者。下面两种情况都提供相同的输出,但在编译时它们是否完全相同?如果不是,在哪种情况下,最好使用其中一种C# 除以2整数,在C中得到一个双精度,c#,casting,int,double,divide,C#,Casting,Int,Double,Divide,我是初学者。下面两种情况都提供相同的输出,但在编译时它们是否完全相同?如果不是,在哪种情况下,最好使用其中一种 int num1 = 1001; int num2 = 505; double num11 = num1; double result1 = num11 / num2; double result2 = (double)num1 / num2; // or (double)num1 / (doub
int num1 = 1001;
int num2 = 505;
double num11 = num1;
double result1 = num11 / num2;
double result2 = (double)num1 / num2; // or (double)num1 / (double)num2;
Console.WriteLine("result1 = " + result1);
Console.WriteLine("result2 = " + result2);
/* Output:
result1 = 1.98217821782178
result2 = 1.98217821782178
*/
如果C中的任何参数是double,则使用双除法,这将导致double。 有关更多信息,请参阅:
在第一个版本中,调用隐式cast将num1转换为double。在第二种情况下,您可以使用显式强制转换来执行相同的操作。在这种情况下,两种方法是相同的,但隐式和显式强制转换不需要相同
我认为显式cast更可取,因为它可以更清楚地读取正在发生的事情,并且不需要初始化新变量。在示例的第三行中。因此,实际上这两种方法完全相同如果您想在运行代码时看到值,您可以设置一个断点并逐步查看其行为。在您的简单示例中,使用num1转换为double的num11相当于使用num1转换为double的double num1。但是,涉及浮点数强制转换的操作可能会变得棘手,并产生令人惊讶的结果,如您在此处所读:。由于您是一名初学者,这对您来说可能仍然有点技术性太强,但实际上,您应该谨慎考虑浮点转换的可能效果。。。