大家好,我是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不会损失精度???
大神在哪里?
关于java的精度损失问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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发现不可读取的内容