3

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

SELECT 1.0 / 3回报0.3......我怎么能得到0.3333333333?(即,更具体地说,32 位或 64 位精度而不是第一个十进制截断?)

4

2 回答 2

2

你可以cast()在划分之前。

要获得 64 位精度:

select cast(1 as double) / 3

要获得 32 位精度:

select cast(1 as real) / 3
于 2019-11-13T11:00:06.547 回答
2

我想文字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
于 2019-11-13T11:00:40.293 回答