鱼C论坛

 找回密码
 立即注册
查看: 1724|回复: 18

[已解决]很初级但又很奇怪的问题

[复制链接]
发表于 2022-5-4 20:59:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
4.0==4
比较出的结果难道不是False吗?
4.0是浮点数
4是整数
类型都不同,为什么运行后是True?
最佳答案
2022-5-4 22:42:57
sugar84 发表于 2022-5-4 22:40
比较的是哪个值呀 懵。 我用id查值也不相同呀

id 查的是地址,他们的值肯定是数学的那个值呀,

数学上比较一个数是否相等用的是差值,差值为 0 即相等,

4.0 - 4 不就为 0 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-4 21:00:44 | 显示全部楼层
== 是比较他们的值的,不考虑类型,

这个是在 __eq__ 魔法方法里面实现的逻辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-4 22:14:22 | 显示全部楼层
可是他们的值是相等的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-4 22:38:46 | 显示全部楼层
柿子饼同学 发表于 2022-5-4 22:14
可是他们的值是相等的吧

4.0 和 4的值不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-4 22:40:19 | 显示全部楼层
isdkz 发表于 2022-5-4 21:00
== 是比较他们的值的,不考虑类型,

这个是在 __eq__ 魔法方法里面实现的逻辑

比较的是哪个值呀 懵。 我用id查值也不相同呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-4 22:42:57 | 显示全部楼层    本楼为最佳答案   
sugar84 发表于 2022-5-4 22:40
比较的是哪个值呀 懵。 我用id查值也不相同呀

id 查的是地址,他们的值肯定是数学的那个值呀,

数学上比较一个数是否相等用的是差值,差值为 0 即相等,

4.0 - 4 不就为 0 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-4 23:12:28 | 显示全部楼层
isdkz 发表于 2022-5-4 22:42
id 查的是地址,他们的值肯定是数学的那个值呀,

数学上比较一个数是否相等用的是差值,差值为 0 即相 ...

如果==是比较值的话
‘4.0’==4
为什么返回又是False  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-4 23:20:09 | 显示全部楼层
sugar84 发表于 2022-5-4 23:12
如果==是比较值的话
‘4.0’==4
为什么返回又是False

'4.0'是字符串 类型不一样了
浮点数存储好像分两个部分 整数部分和浮点部分 当整数部分值一致 而浮点部分为0时,系统默认其相等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-4 23:28:18 | 显示全部楼层
sugar84 发表于 2022-5-4 23:12
如果==是比较值的话
‘4.0’==4
为什么返回又是False

字符串能跟数字一样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-5 01:33:12 | 显示全部楼层
hgh456hgh 发表于 2022-5-4 23:20
'4.0'是字符串 类型不一样了
浮点数存储好像分两个部分 整数部分和浮点部分 当整数部分值一致 而浮点部 ...

你这样说的话 。。。我可以理解了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-5 01:35:15 | 显示全部楼层
isdkz 发表于 2022-5-4 23:28
字符串能跟数字一样吗?

我知道‘4.0’ == 4 去比较肯定是False 类型不一样,一个是字符串 一个是整数
但回到上面 4.0==4 类型也不一样啊 4.0是浮点数, 4是整数,怎么这个相比就比值了,
‘4.0’==4 这个相比就比类型了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 05:45:15 From FishC Mobile | 显示全部楼层
本帖最后由 isdkz 于 2022-5-5 05:47 编辑

那你怎么就不想一下浮点数 4.0跟 整数4的类型不一样,但是他们可以进行加减,

字符串 "4.0" 跟 整数4 可以加减吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 07:12:18 From FishC Mobile | 显示全部楼层
isdkz 发表于 2022-5-5 05:45
那你怎么就不想一下浮点数 4.0跟 整数4的类型不一样,但是他们可以进行加减,

字符串 "4.0" 跟 整数4 可 ...

但是c里面就不可以比较了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 07:15:06 | 显示全部楼层
wp231957 发表于 2022-5-5 07:12
但是c里面就不可以比较了吧

c 里面也没有字符串类型吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 07:22:52 From FishC Mobile | 显示全部楼层
isdkz 发表于 2022-5-5 07:15
c 里面也没有字符串类型吧

不是这个,是c里面4.0和4并不恒等?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 07:42:40 | 显示全部楼层
wp231957 发表于 2022-5-5 07:22
不是这个,是c里面4.0和4并不恒等?!

在 c 里面 4.0 和 4 的值也是相等的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 12:47:23 | 显示全部楼层
isdkz 发表于 2022-5-5 07:42
在 c 里面 4.0 和 4 的值也是相等的吧

确实
  printf("%d\n",4.0==4.0);
     printf("%d\n",4==4.0);
这两个都是返回true
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-5 12:58:17 | 显示全部楼层
isdkz 发表于 2022-5-5 05:45
那你怎么就不想一下浮点数 4.0跟 整数4的类型不一样,但是他们可以进行加减,

字符串 "4.0" 跟 整数4 可 ...

感谢isdkz的耐心解答,思路基本理清楚了,
我可能有点钻牛角尖了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-5 13:38:11 | 显示全部楼层
==是比较对象的值是否相等,如果你想要比较类型可以用is
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表