14-2 关于小数hash问题?
来源:14-2 哈希函数的设计
weixin_慕婉清6533696
2020-12-27
如果按照老师所讲,我将double或者是float中的浮点数按照计算机中的存储方式进行hash的话,那么也就是针对于二进制进行hash计算,这样相当于将其转换为了大正数进行。对此计算过程中的话,那么模的方式应该会存在一些弊端感觉。而且小数本身在计算机中存储就会有一定的问题,有可能做完运算之后导致数据更加失真。个人感觉如果要保证hash函数能够分布均匀且以至于减少冲突,感觉带入到具体问题才能有更好的实践意义。根据具体场景,确定是否使用hash表,其次根据数据本身的一些特点做到有针对性的设计hash函数,感觉更加有意义。
最开始看到小数的时候,第一感觉是放大倍数,然后进行完计算之后再缩小倍数。这样也可以和整数保持一致。
最后波波老师一个大赞,忠实粉丝,2021年的目标就是买完剩下波波老师的课,就差个999了!加油
1回答
-
liuyubobobo
2020-12-27
赞思考!:)
不过小数的精度问题,和我们如何给浮点数做哈希运算是没关系的。至于在具体业务的适用范围里,是否根据数字的精度和范围,可以设计出更好的哈希表,确实是可以考量的。
比如如果我们的小数只是表示金额,那么小数点最后最多不过两位,每个小数乘以 100 是很好的策略;
比如如果我们的小数时表示考试成绩,只有可能出现 0.5,那么所有数字乘以 2 就好。
我在课程中提到的方式,是对任意小数可行的一种策略。
==========
如果你差的是体系课程的话,学完这个课再购买体系课程可能不太值当了。体系课程的数据结构部分和这个课程是基本一致的。体系课程上线的时候,会给每一个购买这个课程的同学一个 299 元的优惠券,相当于可以这个课程退掉,补差价购买体系课程。
如果你已经买了我的其他的算法课程,比如 C++ 的那个算法课程的话,体系课程中的很多内容也在 C++ 课程中有(比如排序算法部分),所以就更不值当了:)
我个人认为如果学习过我的其他课程,没有必要买体系课程了。关于体系课程的一些说明,可以参考这里:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247486023&idx=2&sn=59944e38c23b2a066deade934f62dfb0&chksm=fd8ca501cafb2c17bcb46a7ccedb1b8699c75c8b93a7cea510cb84073a6f734b34c8254ee5af&token=736789215&lang=zh_CN#rd
谢谢你的支持!继续加油!:)
00
相似问题