Spl 整数型与实数型数据类型无法关联,是否能改进?
整数型数据类型,与实数型数据类型虽然都属于数字型。
但是 join 时却无法关联成功,必须转换为统一的整数型或实数型,才行。
这样使用起来很不方便,是否 spl 能改进一下呢。
比如 A60 有如下数据,红框中整数型数据。
B51 为实数型数据
当按主键关联后,并没有关联到任何数据。红框中都是空。
=join@1(A60; B51)
当我们把 A60 红框中数据改给整数型,可以完成关联
或者把 B51 改为实数型也可以。
可见同样是数字型,并不能关联。(数据中并没有这样的问题)
从 spl 文档来看:
实数包括整数、长整数、浮点数、长实数这四种类型,可用类型转换函数 number() 将其它类型数据转换为实数。
既然包括,按说可以关联才对。
这当然不能改了,这是改出错误了。
等值关系要严格相同,代码类的主键也不该是实数。有这种判断还可以防止出错。
具体实现上,整数和实数的 HASH 值也不同,这不能靠一个个对比去找到关联,那就太慢了。
事实上,实数是不精确的,严格地说,就不能用 == 来判断相等,而是要用 abs(差)< 一个很小的数。参考 从一道招聘考题谈起
明白了,谢谢。