qq_31029907 2015-09-03 15:46 采纳率: 0%
浏览 4291
已结题

关于java的精度损失问题

大家好,我是java初学者,对于精度损失还是不太清楚。我们知道对于表数范围:byte,short,int,long,float,double依次增大,所以以下代码应该会报错精度损失:
byte a =1;
byte b =2;
byte i = a +b;
但是,为什么下面这个编译时不报错?
float a = 1.2f;
float b = 2;
float i = a + b;
究竟为什么?等号右自动转换成double,赋值给float不会损失精度???
大神在哪里?

  • 写回答

9条回答

  • devmiao 2015-09-03 16:11
    关注

    能不能编译和精度损失无关,和是否有隐式的类型转换有关。

    float b = 2;
    相当于 float b = (float)2;

    所以此时b已经是浮点了。

    评论

报告相同问题?

悬赏问题

  • ¥15 maixpy训练模型,模型训练好了以后,开发板通电会报错,不知道是什么问题
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容