在orient-db中,我如何舍入小数值

时间:2015-09-30 09:42:24

标签: orientdb

在orientdb中,我有一个问题的示例查询

select  eval('((23 + 46) *  1.0 ) / 2') as abc from SomeClass

上面的查询返回34.5我想将它四舍五入到35.我应用asInteger()但它没有工作。

select  eval('((23 + 46) *  1.0 ) / 2').asInteger() as abc from SomeClass

上面的查询返回34,但我希望它是35

2 个答案:

答案 0 :(得分:2)

我不知道是否有一些本机功能可以实现这一目标。

但你可以用Studio创建一个javascript函数,例如ceil

并在体内完成工作。

尝试插入此功能。

insert into OFunction set name = 'ceil', language = 'javascript', code = 'return Math.ceil(num);', parameters = ["num"]

然后

select  ceil(eval('((23 + 46) *  1.0 ) / 2'))

答案 1 :(得分:1)

由于此功能无法使用,您可以定义自己的功能(打开Studio - >功能选项卡),其名称为“round”,使用以下代码获取1个参数“value”:

return java.lang.Math.round(value);

然后你可以用SQL调用它:

select round(value) as abc from SomeClass

其中value是SomeClass类中的属性。