关于KDB中div运算规则的疑问:整数与浮点数运算结果差异
KDB中
div运算的类型相关行为差异 现象复现
执行以下KDB代码:
a:2 div 2.4 b:2.0 div 2.4
结果为a=1,b=0,看似与官方“div返回不超过x%y的最大整数”的定义矛盾。
原因解析
KDB的div运算行为严格依赖操作数的数据类型:
- 当左操作数为整数类型时,若右操作数是浮点数,会先将右操作数截断为整数(丢弃小数部分),再执行整数除法。这里
2.4被截断为2,因此2 div 2.4等价于2 div 2,结果为1。 - 当操作数均为浮点数类型时,
div会严格遵循官方定义:计算x%y后,返回不超过该值的最大整数。2.0%2.4≈0.833,不超过它的最大整数是0,因此b=0。
验证示例
可以通过强制类型转换验证这一逻辑:
// 整数转浮点数后执行div,结果与b一致 c:2.0 div 2.4 // c=0 // 浮点数截断为整数后执行div,结果与a一致 d:2 div 2 // d=1
内容的提问来源于stack exchange,提问作者sevenmiracle
相关产品推荐
相关产品推荐

