如何在 KDB 中将浮点数转换为整数数据类型?
How do I cast a float to an integer datatype in KDB?
我在 KDB(Q) 中有一个 table,其大小列当前为浮点格式。如何将整个列从 float 转换为 int,同时截断小数位?
您可以通过更新 table
来完成此操作
q)tab:([]bid:1000?5f;price:1000?5f;size:1000?100f)
q)exec t from meta tab
"fff"
q)update "i"$size from `tab
`tab
q)exec t from meta tab
"ffi"
上面中肯的一点就是"i"$
的应用,也就是'casting'从float到integer的size列
另一种方法是使用 @
amend 更新列:
q)t:([]sym:500?`3;px:500?10f;size:500?100f)
q)3#t
sym px size
---------------------
gdh 7.678514 95.25017
jlb 2.345028 42.09728
nln 5.553286 98.80532
q)t:@[t;`size;"i"$] / can also use `t to update t
q)3#t
sym px size
-----------------
gdh 7.678514 95
jlb 2.345028 42
nln 5.553286 98
我认为还值得指出的是,floor/ceiling 函数分别对 down/up 进行舍入处理,并且在这种情况下比 "i"$
运行速度稍快,但是这些函数将列转换为 long而不是 int:
q)meta@[t;`size;floor]
c | t f a
----| -----
sym | s
px | f
size| j
我在 KDB(Q) 中有一个 table,其大小列当前为浮点格式。如何将整个列从 float 转换为 int,同时截断小数位?
您可以通过更新 table
来完成此操作q)tab:([]bid:1000?5f;price:1000?5f;size:1000?100f)
q)exec t from meta tab
"fff"
q)update "i"$size from `tab
`tab
q)exec t from meta tab
"ffi"
上面中肯的一点就是"i"$
的应用,也就是'casting'从float到integer的size列
另一种方法是使用 @
amend 更新列:
q)t:([]sym:500?`3;px:500?10f;size:500?100f)
q)3#t
sym px size
---------------------
gdh 7.678514 95.25017
jlb 2.345028 42.09728
nln 5.553286 98.80532
q)t:@[t;`size;"i"$] / can also use `t to update t
q)3#t
sym px size
-----------------
gdh 7.678514 95
jlb 2.345028 42
nln 5.553286 98
我认为还值得指出的是,floor/ceiling 函数分别对 down/up 进行舍入处理,并且在这种情况下比 "i"$
运行速度稍快,但是这些函数将列转换为 long而不是 int:
q)meta@[t;`size;floor]
c | t f a
----| -----
sym | s
px | f
size| j