Google Bigquery - 在不丢失精度的情况下将浮点数表示为字符串

Google Bigquery - Representing float as string without loosing the precision

在 Google bigquery 中,只是好奇:是否有一种简单的方法可以将浮点值呈现为字符串而不丢失其精度。

目前:

select 
  string(float_value) as str_float_value,
  cast(float_value as string) as cast_float_value_as_string, 
  float_value as original_float_value
from  (select 33.7474782 as float_value); 

这会给你回报:

Row | str_float_value | cast_float_value_as_string | original_float_value
----+-----------------+----------------------------+---------------------
1   | 33.7475         | 33.7475                    | 33.7474782 

有没有更好的方法可以在不丢失精度的情况下将浮点数转换为字符串?

[上下文:我有一些用例,其中有 2 个不同的 tables,一个包含小数值的字符串列,另一个 table 包含常规浮点列,我总是可以将字符串转换为浮点数然后加入就可以了。但是很好奇是否有任何方法可以在不失去精度的情况下将浮点数作为字符串]

看起来遗留 SQL 在将浮点值转换为字符串时保留了较低的精度。可以改用 standard SQL 吗?这是我看到的:

$ bq query "SELECT CAST(float_value AS STRING) AS float_string, float_value FROM (SELECT 33.7474782 AS float_value);"
+--------------+-------------+
| float_string | float_value |
+--------------+-------------+
| 33.7475      |  33.7474782 |
+--------------+-------------+

$ bq query --use_legacy_sql=false "SELECT CAST(float_value AS STRING) AS float_string, float_value FROM (SELECT 33.7474782 AS float_value);" 
+--------------+-------------+
| float_string | float_value |
+--------------+-------------+
| 33.7474782   |  33.7474782 |
+--------------+-------------+