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是正确的答案?我看这显然是错的。