`ROUND()` 函数 returns 意外值

`ROUND()` function returns unexpected value

我在一个特定案例中发现扳手的 ROUND() 函数 returns 意外值。

这是我的发现。

SELECT ROUND(34.092135, 8)
> 34.092135

SELECT ROUND(34.092136, 8)
> 34.092135999999996 // this is supposed to return 34.092136

SELECT ROUND(34.092137, 8)
> 34.092137 

我发现这些查询与 BigQuery 的工作方式相同。
我这边有没有什么错误的假设,如果没有,我怎样才能让它正常工作?

谢谢。

Cloud Spanner 和 BigQuery 似乎都存在这个问题。尝试使用不同的值,但问题似乎是针对一组特定的输入,即它显示值 33.092136、34.092136、35.092136、......、62.092136、63.092136 的意外结果。在 33.092136 之前和从 64.092136 开始,问题似乎不存在。我也尝试使用 Cloud SQL(MySQL) 并且问题不存在。

我已经在 Public Issue Tracker 中创建了 an issue。我建议您为问题加注星标,以便在创建的问题有任何更新时收到通知。