【问题标题】:`ROUND()` function returns unexpected value`ROUND()` 函数返回意外值
【发布时间】:2022-01-09 16:36:55
【问题描述】:

我发现在特定情况下扳手的ROUND() 函数返回了意外的值。

这是我找到的。

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 相同。
我是否有任何误解,或者如果没有,我怎样才能让它正常工作?

谢谢。

【问题讨论】:

  • 只有SELECT ROUND(34.092136, 8)会给出这样的结果吗?
  • 我不知道SELECT ROUND(34.092136, 8) 是否是唯一返回这种结果的函数或值。但到目前为止,这是我能找到的唯一一个。现在我尝试了SELECT FLOOR(34.092136)SELECT CEIL(34.092136),例如,它们返回了正确的结果。
  • 这个数字“34.092136”的具体用例是什么,因为这个数字似乎很特殊。

标签: sql google-cloud-spanner


【解决方案1】:

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。我建议您为该问题加注星标,以便在创建的问题有任何更新时收到通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多