Как и другие подозреваемые, это проблема форматирования текста.
Snowflake поддерживает различные способы форматирования чисел, см., Например, здесь .Таким образом, в зависимости от используемого формата, вы увидите разные значения, например:
-- Will round the value
select to_varchar(0.3::float + 0.6::float, '9.999999');
-------------------------------------------------+
TO_VARCHAR(0.3::FLOAT + 0.6::FLOAT, '9.999999') |
-------------------------------------------------+
0.9 |
-------------------------------------------------+
-- Enough decimal digits to print without rounding
select to_varchar(0.3::float + 0.6::float, '9.9999999999999999');
-----------------------------------------------------------+
TO_VARCHAR(0.3::FLOAT + 0.6::FLOAT, '9.9999999999999999') |
-----------------------------------------------------------+
0.8999999999999999 |
-----------------------------------------------------------+
-- "text minimal" format without exponent
select to_varchar(0.3::float + 0.6::float, 'tm9');
--------------------------------------------+
TO_VARCHAR(0.3::FLOAT + 0.6::FLOAT, 'TM9') |
--------------------------------------------+
0.8999999999999999 |
--------------------------------------------+
-- "text minimal" format with exponent
select to_varchar(0.3::float + 0.6::float, 'tme');
--------------------------------------------+
TO_VARCHAR(0.3::FLOAT + 0.6::FLOAT, 'TME') |
--------------------------------------------+
8.999999999999999e-1 |
--------------------------------------------+
Обратите внимание, что это форматирование в основном используется на стороне сервера (следовательно, явное приведение TO_VARCHAR
) - разные клиенты могут форматировать плавающиезначения точек по-разному.