double转成decimal有误差

如下代码,记录中buy是4.52,但decimal32(buy, 2)转换后保存到文本文件中后变成4.51了

t=table(100:1, `id`buy, [INT,DOUBLE]);
insert into t values (2,4.52);
saveText(select buy,decimal32(buy, 3) as buy3, decimal32(buy, 2) as buy2 from t,"buy.csv");

或者直接执行decimal64(4.52, 2) ,也得到 4.51。请问是怎么回事?

请先 登录 后评论

1 个回答

saki

这可能是由于浮点数误差造成的,想避免浮点到decimal的转化误差,可以将数据转成 STRING。

t=table(100:1, `id`buy, [INT,DOUBLE]);
insert into t values (2,4.52);
re=select buy,buy.format("0.00") as buy2 from t
saveText(re,"buy.csv");


请先 登录 后评论
  • 1 关注
  • 0 收藏,112 浏览
  • Boye 提出于 2024-03-15 17:12