永发信息网

float==Double 的比较

答案:2  悬赏:0  手机版
解决时间 2021-02-25 01:26
  • 提问者网友:星軌
  • 2021-02-24 10:48
float f1=1.0f;
Double d=new Double(1);
if(d==f1){
System.out.println("true");

}else{
System.out.println("flase");

}
为什么是true 呢? 谢谢

如果等于1.2就不一样了吗? 还有1.2不在精度范围内吗? 谢谢啊
float f1 = 1.2f;
Double d = new Double(1.2);
if (d == f1) {
System.out.println("true");

} else {
System.out.println("flase");

}
那这个为什么是false呢? 而且==不是比较地址吗?怎么会为true呢? 大哥大姐门..帮帮我啊
最佳答案
  • 五星知识达人网友:拾荒鲤
  • 2021-02-24 11:25
1.2F和1.2的double形式的精度肯定是不同,计算机中存储十进制的小数数字,由于转化为二进制不可能完全表示,所以才出现精度的概念,数据结构一书已经讲得很清楚,说一下java中的==对于基本类型,包括基本类型的包装类都是比较它们的大小。
全部回答
  • 1楼网友:话散在刀尖上
  • 2021-02-24 12:51
d.equals(f) equals是比较两个对象的内容是否相同,f没有被赋任何值,此处会出现异常。 g.equals(4.2) 数字4.2默认是double的,而g是float,两个隶属不同classes 的对象绝不会相等,所以是false。如果g.equals((float)4.2))或者d.equals(4.2)就都是true。 补充: 如果float f = 4.2f,f是float,而d是double,两个隶属不同classes 的对象绝不会相等,所以是d.equals(f)也是false
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯