Google bigquery 如何在Bigquery中通过TRUNC或ROUND修复浮点值问题的精度

Google bigquery 如何在Bigquery中通过TRUNC或ROUND修复浮点值问题的精度,google-bigquery,Google Bigquery,当我在bigquery上运行下面的sql代码时 SELECT ROUND( 43.097410399271645, 6) 我希望得到43.097410,但我得到了下面的结果 43.097409999999996 为什么会发生这种情况?这是否回答了您的问题?谢谢你的链接。我可以使用该方法对值进行四舍五入。但是,我也想知道为什么会发生这个问题。这是谷歌大查询中的一个bug吗?更像是一个bug。若您四舍五入0,下一个数字为4或更低,则会产生上述场景,但若下一个数字为5或更高,则效果良好。您可以在此

当我在bigquery上运行下面的sql代码时

SELECT ROUND( 43.097410399271645, 6)
我希望得到43.097410,但我得到了下面的结果

43.097409999999996

为什么会发生这种情况?

这是否回答了您的问题?谢谢你的链接。我可以使用该方法对值进行四舍五入。但是,我也想知道为什么会发生这个问题。这是谷歌大查询中的一个bug吗?更像是一个bug。若您四舍五入0,下一个数字为4或更低,则会产生上述场景,但若下一个数字为5或更高,则效果良好。您可以在此处提交问题,然后查找不是bug且不特定于BigQuery的BQ问题-->。当使用二进制存储表示实数时,这是一个不可避免的问题。因此,在将结果转换回实数时,会出现许多奇怪但不太显著的错误。这也是为什么你永远不应该对实数进行精确的比较,而应该只进行一定精度的比较。