Osc*_*ley 11 .net c# casting implicit-cast
我编写了一些计算内容(我在下面复制了一个非常简化的例子),例如CASE2,并得到了不好的结果.像CASE1一样重构代码并且工作正常.我知道CASE 2中有一个隐含的演员,但不确定完整的原因.任何人都可以解释我下面究竟发生了什么?
//CASE 1, result 5.5
double auxMedia = (5 + 6);
auxMedia = auxMedia / 2;
//CASE 2, result 5.0
double auxMedia1 = (5 + 6) / 2;
//CASE 3, result 5.5
double auxMedia3 = (5.0 + 6.0) / 2.0;
//CASE 4, result 5.5
double auxMedia4 = (5 + 6) / 2.0;
Run Code Online (Sandbox Code Playgroud)
我的猜测是,CASE2中的/ 2将(5 + 6)转换为int并导致舍入为5,然后再次转换为double并转换为5.0.
CASE3和CASE 4也解决了这个问题.
Mar*_*ell 13
为了扩展Marc(正确)答案,整数被解释为整数,而带小数的数字被解释为double.要将整数声明为文字双精度数,请向其附加"D":
//CASE 2b, result 5.5
double auxMedia2b = (5D + 6D) / 2;
Run Code Online (Sandbox Code Playgroud)