Java表达式的值及数据类型

表达式分别为:System.out.println(1+4/5+(int)5.2/2.5);System.out.println(1+4/5+(int)(5.2/2.5)... 表达式分别为:
System.out.println(1+4/5+(int)5.2/2.5);
System.out.println(1+4/5+(int)(5.2/2.5));
System.out.println(1+4/5+5.2/2.5);
System.out.println(1.0+4/5+5.2/2.5);
System.out.println(1+4/5.0+5.2/2.5);
值分别为:
3.0
3
3.08
3.08
3.88
数据类型也可以从值中看出来,但是不清楚为什么是这样的?能否有高手解释下为什么出这样的值并且是这样的数据类型?多谢!
展开
 我来答
百度网友f384c78
推荐于2016-02-08 · TA获得超过2070个赞
知道小有建树答主
回答量:538
采纳率:0%
帮助的人:715万
展开全部
System.out.println(1+4/5+(int)5.2/2.5);
4/5为整数除法,结果为0。(int)5.2/2.5是先将5.2转换为整型得5,再除以2.5,得2.0(注意结果为浮点数),所以最后结果是浮点数,3.0

System.out.println(1+4/5+(int)(5.2/2.5));
由于5.2/2.5加了括号,所以是先做浮点除法,再转换为整型,最后结果也是整型,得3

System.out.println(1+4/5+5.2/2.5);
1+0+2.08=3.08,没什么好说的

System.out.println(1.0+4/5+5.2/2.5);
1.0是浮点数,4/5先按整数除法来,在转换为浮点数(得0.0),5.2/2.5=2.08,结果是浮点数3.08

System.out.println(1+4/5.0+5.2/2.5);
由于4/5.0中的除数是浮点数,所以这一步按浮点数除法来计算,得0.8,结果为3.88
prosperMoney
2011-06-01 · TA获得超过279个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:143万
展开全部
以下两点可以告诉你为什么会这样:
1、在java中,如果乘“*”和除“/”的两端都是整数,那么它会将结果的小数部分去掉,所以"4/5"的结果是0,而"4/5.0"的结果是"0.8",而加“+”和减“-”则不影响。
2、第一个表达式(1+4/5+(int)5.2/2.5)中,只是把"5.2"转换为了整数"5",而"2.5"是小数,所以结果中有一位小数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自由翱祥xiang
2020-12-23 · 贡献了超过105个回答
知道答主
回答量:105
采纳率:0%
帮助的人:7.1万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式