在Presto SQL中,SELECT 1 / 3
返回0
,因为/
执行整数除法。
但是SELECT 1.0 / 3
返回0.3
...如何获得0.3333333333
? (即更确切地说,是32位还是64位精度,而不是第一个小数位截断?)
在Presto SQL中,SELECT 1 / 3
返回0
,因为/
执行整数除法。
但是SELECT 1.0 / 3
返回0.3
...如何获得0.3333333333
? (即更确切地说,是32位还是64位精度,而不是第一个小数位截断?)
我想将文字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
,
除法之前,您可以cast()
。
要获得64位精度:
select cast(1 as double) / 3
要获得32位精度:
select cast(1 as real) / 3