Nebula:
- nebula 版本:2.6.0
- 部署方式:分布式
- 安装方式:Docker
- 是否为线上版本:N
问题的具体描述:
测试发现sum对Double类型求和有精度损失,这是我的设置有问题?还是当前版本存在此问题?
相关测试截图:
字段类型:
单条查询:
求和:
Nebula:
问题的具体描述:
测试发现sum对Double类型求和有精度损失,这是我的设置有问题?还是当前版本存在此问题?
相关测试截图:
字段类型:
单条查询:
求和:
发一下文本,不要截图
单条:
amount busd
335130.359239 335230.9285085
330700.45991 331031.49107037
求和:
amount busd
665830.819149 666262.4195788701
这个结果有啥问题么
结果应该是:
666262.41957887
sum求和是:
666262.4195788701
这里最后多了01。
我测试过程中也有0.33334 求和结果为0.3333399 这种类似的情况。
浮点数是有精度损失的
这个问题有解决办法吗?
现在只有toFloat(),没有支持toDouble()是什么原因呢?
toFloat
就是toDouble
,计算层没有float类型
理解了。
下面的测试,得到的结论就是sum求和对浮点有精度损失。
要不损失精度,目前可以做到吗?
DROP TAG INDEX IF EXISTS test_index_amount;
DROP TAG IF EXISTS test;
CREATE TAG IF NOT EXISTS test (
`amount` DOUBLE COMMENT "amount"
);
CREATE TAG INDEX test_index_amount ON test(amount);
INSERT VERTEX test(amount)
VALUES "vid01" : (335230.9285085);
INSERT VERTEX test(amount)
VALUES "vid02" : (331031.49107037);
MATCH (v: test)
RETURN
sum(properties(v).amount) AS amountSum
做不了的,double的表示方法就是有精度损失的
了解了,谢谢。
数据库中有一种高精度decimal类型,专门来处理你这类问题的。
您是指nebula吗?但nebula现在没有decimal
传统的经典的数据都有这种类型。nebula目前没有。
所以,现在nebula就是不能解决我这个问题是吗?
是的,你可以去给我们提供issue
了解了,谢谢。
Kyle 方便的话,可以给我们提一个 feature issue 哈:https://github.com/vesoft-inc/nebula/issues/new/choose 方便我们做下一次的版本功能规划~ 谢谢啦
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。