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

关于java中强制转换为题

关于java中强制转换为题

掌门飞哥 2016-10-25 15:06:11
double a=1; double b=2; double c=3; double result = a*b+c/2+2*(a+b)/c; System.out.println("result="+result);为什么输出结果为5.5,没有报错在java虚拟机中,都是默认结果为int,我这里是double,按说应该报错的,高的到低的转换,但是没有保存,求大神指点,谢谢了!
查看完整描述

3 回答

?
JjayG

TA贡献27条经验 获得超6个赞

1*2 + 3/2 +2*(1+2)/3

2 + 1.5 + 2 = 5.5

你的result定义的是double型的,计算中出现了小数,那么结果就会使double型的呀。。。所以5.5也没错吧?

困惑的点没有get到

查看完整回答
反对 回复 2016-10-26
  • 掌门飞哥
    掌门飞哥
    我的意思是,我现在的类型是double,java虚拟机中输出的一般都是int型别,所以,应该需要强制转换的,double 型表示的值范围要比 int 表示的值范围大,且从 double 值转换到 int 值,会进行四舍五入,从而有精度损失。所以,按说应该会报错,为什么呢!谢谢了!!!
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

        double result = a*b+c/2+2*(a+b)/c;

a,b,c都是double类型

结果也正确啊,还有是表数范围小的自动向表数范围大的转换你记错了

查看完整回答
反对 回复 2016-10-25
  • 掌门飞哥
    掌门飞哥
    ,我的意思是,我现在的类型是double,java虚拟机中输出的一般都是int型别,所以,应该需要强制转换的,double 型表示的值范围要比 int 表示的值范围大,且从 double 值转换到 int 值,会进行四舍五入,从而有精度损失。所以,按说应该会报错,为什么呢!谢谢了!!!
  • JustWannaHugU
    JustWannaHugU
    jvm中不是最终都转换为int类型。我还真不了解,等别人回答吧!
  • 掌门飞哥
    掌门飞哥
    还是要谢谢你!
点击展开后面1
  • 3 回答
  • 1 关注
  • 1495 浏览

添加回答

举报

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