Google Bigquery - 将float表示为字符串而不会丢失精度

时间:2017-06-12 23:07:24

标签: string floating-point google-bigquery 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 

有没有更好的方法将float作为字符串而不失去它的精度?

[上下文:我有一些用例,其中有2个不同的表,其中一个字符串列包含小数值,另一个表包含常规浮点列,我总是可以将字符串转换为float,然后join将起作用。但只是好奇是否有任何方式我们可以浮动为字符串而不会失去精度]

1 个答案:

答案 0 :(得分:2)

在将浮点值强制转换为字符串时,遗留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 |
+--------------+-------------+