在谷歌大查询中,只是好奇:有没有一种简单的方法可以将浮点值呈现为字符串而不会失去它的精度。
现在:
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 个不同的表,一个带有包含分数值的字符串列,另一个表包含常规浮点列,我总是可以将字符串转换为浮点数,然后连接将起作用。但只是好奇是否有任何方法可以在不损失精度的情况下将浮点作为字符串]
看起来传统 SQL 在将浮点值转换为字符串时保留的精度较低。你可以改用标准 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 |
+--------------+-------------+