【发布时间】:2019-08-13 20:42:56
【问题描述】:
我是初学者。以下两种情况都提供相同的输出,但在编译时它们是否完全相同?如果不是,在哪种情况下使用其中一种更可取?
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
*/
【问题讨论】:
-
在你的例子的第三行你正在做implicit cast。所以实际上这两种方法都是一样的
-
如果您想在运行代码时查看这些值,您始终可以设置一个断点并单步执行它以查看它的行为方式。 docs.microsoft.com/en-us/visualstudio/debugger/…
-
在您的简单情况下,使用
num11(将 num1 转换为双精度)等效于使用(double) num1(将 num1 转换为双精度)。但是,涉及浮点数转换的操作可能会变得棘手并产生令人惊讶的结果,您可以在此处阅读:stackoverflow.com/questions/8795550/…。由于您是初学者,这对您来说可能仍然有点过于技术性,但您最好谨慎对待浮点转换的可能影响......
标签: c# casting int double divide