Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 除以2整数,在C中得到一个双精度_C#_Casting_Int_Double_Divide - Fatal编程技术网

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。但是,涉及浮点数强制转换的操作可能会变得棘手,并产生令人惊讶的结果,如您在此处所读:。由于您是一名初学者,这对您来说可能仍然有点技术性太强,但实际上,您应该谨慎考虑浮点转换的可能效果。。。