为了账号安全,请及时绑定邮箱和手机立即绑定

int a=11;int b=3;double c;c=a/b;为什么输出的c是3.0?java不是自动低精度向高精度的转换吗?

int a=11;int b=3;double c;c=a/b;为什么输出的c是3.0?java不是自动低精度向高精度的转换吗?

Meng7y 2017-05-23 18:36:17
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

自动转型确实是会发生在运算中的。

不过呢, c = a / b; 这里第一步进行的运算是除法,而且除号两侧都是整型,所以这个除法的整个过程中没有发生向double的转型(因为无需转型啊),a / b 的结果还是 int 型的 3。

再用这个 int 型的 3 为 double 型的 c 初始化,c 当然只能是 3.0 了。


如果你需要一开始的除法结果就是 double 类型,只要把 a 或 b 的任意一个的声明改为 double 即可。这样 a / b 会由于两侧类型不一致而先进行自动转型,这个除法的结果也就会成为 double 型的了。

查看完整回答
反对 回复 2017-05-23
  • 1 回答
  • 0 关注
  • 1683 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信