Snowflake cloud data platform 计算时如何修正雪花中的舍入误差?

Snowflake cloud data platform 计算时如何修正雪花中的舍入误差?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,在尝试执行以下计算时,我得到了雪花中的舍入误差 select ROUND(84186926/91.0)*91.0 我得到的答案是84186921。然而,正确答案是84186926 有没有办法解决这个舍入错误 提前感谢。首先欢迎使用浮点数。 如果在Windows Calculator中84186926/91.0,则会得到925131.0549450549 如果你*91给出了你期望的答案 手头的雪花默认为小数点后6位,因此84186926/91.0为您提供925131.054945 然后使用默认为

在尝试执行以下计算时,我得到了雪花中的舍入误差

select ROUND(84186926/91.0)*91.0
我得到的答案是84186921。然而,正确答案是84186926

有没有办法解决这个舍入错误


提前感谢。

首先欢迎使用浮点数。 如果在Windows Calculator中
84186926/91.0
,则会得到
925131.0549450549
如果你
*91
给出了你期望的答案

手头的雪花默认为小数点后6位,因此
84186926/91.0
为您提供
925131.054945
然后使用默认为零位小数的
ROUND()
函数,得到
925131
然后乘以
91.0
,得到
84186921

因此,即使您将右括号移动为
四舍五入(4186926/91.0*91.0)
,您也会得到
4186926
,因为现在您正在进行四舍五入
84186925.9..
但实际上,您永远不应该在失去精度时首先进行除法,
4186926*91.0/91.0
4186926.000000
视为失去精度(除法)最后完成


另一个选项是使用具有所需固定精度的格式,如
number(30,15)
因此
84186926::number(30,15)/91.0::number(30,15)
因此给出了
925131.054945054945055
,但实际上你应该交换运算顺序。

你的预期答案是错误的。你先除法,然后取整,然后乘以相同的除数。除法的小数部分是0.0549。将其乘以91,得到5,即84186926和84186926之间的差你为什么认为84186926是正确的答案?我看这显然是错的。