如何在 DolphinDB 中准确舍入浮点值?

How to round a floating-point value accurately in DolphinDB?

提问人:yiniwei 提问时间:4/25/2023 更新时间:4/25/2023 访问量:19

问:

我想用函数四舍五入浮点数,但结果不是我所期望的。例如,round(17.955, 2) 的结果是 17.95 而不是 17.96。要得到后者,我必须添加 0.0001。为什么会这样,我该怎么办?round

舍入 精度 floating-accuracy dolphindb

评论

0赞 phuclv 4/25/2023
无法用二进制浮点数表示 17.95。最接近的是 17.949999999999999992895 浮点数学坏了吗?.对于完全可表示的值,您还需要注意诸如四舍五入或四舍五入到最接近的值等事项,即使对于以数字 5 结尾的值也是如此

答:

1赞 JaneYe 4/25/2023 #1

您需要考虑浮点数的精度。17.955 只能保存为 17.954999999999998 二进制,因此返回 17.95。在使用之前,您可以将 17.955 转换为 DECIMAL 类型,例如round()roundround(19.955$DECIMAL32(3), 2 )