文章目录
写在前面
在梳理这个问题的答案之前,我搜了一下网上很多人给出的回答,他们的回答大多数有以下几点:
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的,是可以准