程序里为什么1==1.0返回true?

本文探讨了在Java中1为何等于1.0返回true的原因,解释了"=="操作符在基本类型比较时比较的是数值而非内存地址。通过分析浮点数在二进制下的表示,揭示了1.1不等于(float)1.1的原因,涉及到浮点数的二进制表示、数据结构和科学计数法。
摘要由CSDN通过智能技术生成

写在前面

在梳理这个问题的答案之前,我搜了一下网上很多人给出的回答,他们的回答大多数有以下几点:
1、它两比较的是值不是类型,所以相等。
2、 js 中没有整数和浮点数,只有 number 类型。

第一个回答对了,但是不全,
比如无法解释1.1==(float)1.1返回false、1.5==(float)1.5返回true。

第二个回答只针对js有效,java、python、c等该如何解释?

1、为什么1==1.0返回true?

有这个疑问的,一般知道以下两点:
①”==“比较的是内存地址。
②“1”是int类型,“1.0”是double类型。

代码实例(java):
在这里插入图片描述

2、解释(简要)

1、 “==” 在比较基本类型时比较的是“值”,在比较复合类型时比较的是内存地址,这里是基本类型比较,所以 1 = = 1.0 返回true。那么为什么 1.1 = = (float)1.1 返回false呢?

2、因为在比较基本类型的值的时候,实际上比较的是这个数转化为二进制后的值。十进制的数1.0、1.5、1.25等是整数或小数最后一位是5的,是可以准

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值