我是新手,因为你可能会说,请向初学者澄清以下代码如何截取输出-2.50作为答案。我仍然对int -> double中的升职/降级主题感到非常困惑。
int x = 5;
double y = 2.5;
double q = x / 10 - y;
System.out.printf("%.2f\n",q);我的看法是: double q= 5.0 (x从int升级为double )/ 10.0 - 2.5,等于0.5 - 2.5 = -2.00 (由于“%.2F\n”,有两个小数位)
为什么正确答案是-2.50而不是-2.00?
发布于 2016-01-20 15:12:52
X是一个整数,x/10的值会得到0而不是0.5(因为x和10都是整数)。如果使用x/10.0,则输出将为0.5。
发布于 2016-01-20 15:20:47
你也可以这样写你的表达式:
double q = (x / 10) - y;
现在括号里没有doubles,所以它是一个纯int-division,它提供了5 / 10 = 0。在那之后你就有了
double q = 0 - y;
现在,您有了int和double的区别。这就是从(int)0升级到(double)0.0的地方。
最终结果将是
double q = 0.0 - 2.5; //q == -2.5
发布于 2016-01-20 15:21:28
由于除法比减法具有更高的优先级,因此x/10将首先执行,这里我们将除以两个整数(不管存储最终答案的变量是double q = x / 10 - y; ),因此answer将是一个整数,即5/10 =0,然后将完成int和double的减法(这里int将被提升为double)。所以现在它实际上是0.0 - 2.5,因此答案是-2.50
https://stackoverflow.com/questions/34893620
复制相似问题