很初级但又很奇怪的问题
4.0==4比较出的结果难道不是False吗?
4.0是浮点数
4是整数
类型都不同,为什么运行后是True? == 是比较他们的值的,不考虑类型,
这个是在 __eq__ 魔法方法里面实现的逻辑 可是他们的值是相等的吧 柿子饼同学 发表于 2022-5-4 22:14
可是他们的值是相等的吧
4.0 和 4的值不一样 isdkz 发表于 2022-5-4 21:00
== 是比较他们的值的,不考虑类型,
这个是在 __eq__ 魔法方法里面实现的逻辑
比较的是哪个值呀 懵。 我用id查值也不相同呀 sugar84 发表于 2022-5-4 22:40
比较的是哪个值呀 懵。 我用id查值也不相同呀
id 查的是地址,他们的值肯定是数学的那个值呀,
数学上比较一个数是否相等用的是差值,差值为 0 即相等,
4.0 - 4 不就为 0 吗? isdkz 发表于 2022-5-4 22:42
id 查的是地址,他们的值肯定是数学的那个值呀,
数学上比较一个数是否相等用的是差值,差值为 0 即相 ...
如果==是比较值的话
‘4.0’==4
为什么返回又是False sugar84 发表于 2022-5-4 23:12
如果==是比较值的话
‘4.0’==4
为什么返回又是False
'4.0'是字符串 类型不一样了
浮点数存储好像分两个部分 整数部分和浮点部分 当整数部分值一致 而浮点部分为0时,系统默认其相等 sugar84 发表于 2022-5-4 23:12
如果==是比较值的话
‘4.0’==4
为什么返回又是False
字符串能跟数字一样吗? hgh456hgh 发表于 2022-5-4 23:20
'4.0'是字符串 类型不一样了
浮点数存储好像分两个部分 整数部分和浮点部分 当整数部分值一致 而浮点部 ...
你这样说的话 。。。我可以理解了~ isdkz 发表于 2022-5-4 23:28
字符串能跟数字一样吗?
我知道‘4.0’ == 4 去比较肯定是False 类型不一样,一个是字符串 一个是整数
但回到上面 4.0==4 类型也不一样啊 4.0是浮点数, 4是整数,怎么这个相比就比值了,
‘4.0’==4 这个相比就比类型了? 本帖最后由 isdkz 于 2022-5-5 05:47 编辑
那你怎么就不想一下浮点数 4.0跟 整数4的类型不一样,但是他们可以进行加减,
字符串 "4.0" 跟 整数4 可以加减吗? isdkz 发表于 2022-5-5 05:45
那你怎么就不想一下浮点数 4.0跟 整数4的类型不一样,但是他们可以进行加减,
字符串 "4.0" 跟 整数4 可 ...
但是c里面就不可以比较了吧 wp231957 发表于 2022-5-5 07:12
但是c里面就不可以比较了吧
c 里面也没有字符串类型吧 isdkz 发表于 2022-5-5 07:15
c 里面也没有字符串类型吧
不是这个,是c里面4.0和4并不恒等?! wp231957 发表于 2022-5-5 07:22
不是这个,是c里面4.0和4并不恒等?!
在 c 里面 4.0 和 4 的值也是相等的吧 isdkz 发表于 2022-5-5 07:42
在 c 里面 4.0 和 4 的值也是相等的吧
确实
printf("%d\n",4.0==4.0);
printf("%d\n",4==4.0);
这两个都是返回true isdkz 发表于 2022-5-5 05:45
那你怎么就不想一下浮点数 4.0跟 整数4的类型不一样,但是他们可以进行加减,
字符串 "4.0" 跟 整数4 可 ...
感谢isdkz的耐心解答,思路基本理清楚了,
我可能有点钻牛角尖了。 ==是比较对象的值是否相等,如果你想要比较类型可以用is
页:
[1]