【发布时间】:2020-03-09 03:53:08
【问题描述】:
在 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 位精度而不是第一个十进制截断?)
【问题讨论】:
分割前可以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
【讨论】: