首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java原语类型升级混淆

Java原语类型升级混淆
EN

Stack Overflow用户
提问于 2016-01-20 15:10:01
回答 4查看 122关注 0票数 1

我是新手,因为你可能会说,请向初学者澄清以下代码如何截取输出-2.50作为答案。我仍然对int -> double中的升职/降级主题感到非常困惑。

代码语言:javascript
复制
    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?

EN

回答 4

Stack Overflow用户

发布于 2016-01-20 15:12:52

X是一个整数,x/10的值会得到0而不是0.5(因为x和10都是整数)。如果使用x/10.0,则输出将为0.5。

票数 4
EN

Stack Overflow用户

发布于 2016-01-20 15:20:47

你也可以这样写你的表达式:

double q = (x / 10) - y;

现在括号里没有doubles,所以它是一个纯int-division,它提供了5 / 10 = 0。在那之后你就有了

double q = 0 - y;

现在,您有了intdouble的区别。这就是从(int)0升级到(double)0.0的地方。

最终结果将是

double q = 0.0 - 2.5; //q == -2.5

票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34893620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档