使用 PrestoSQL 进行 32 位或 64 位浮点除法

32- or 64-bits float division with PrestoSQL

在 Presto SQL, SELECT 1 / 3 returns 0, 因为 / 执行整数除法。

但是SELECT 1.0 / 3returns0.3...我怎样才能得到0.3333333333? (即,更具体地说,32 位或 64 位精度而不是第一位小数截断?)

可以cast()再除。

要获得 64 位精度:

select cast(1 as double) / 3

要获得 32 位精度:

select cast(1 as real) / 3

我假设文字 1.0 被视为 DECIMAL(2, 1)。您可以改用浮点文字:

SELECT REAL '1'   / 3 -- '1' is a 32-bit float
SELECT DOUBLE '1' / 3 -- '1' is a 64-bit float
SELECT 1e0        / 3 -- scientific notation implies 64-bit float