【发布时间】:2018-12-04 19:15:19
【问题描述】:
我的目标是 Presto 0.212 中的两个整数除以两个整数,例如。 G。 1/2。幼稚的方法SELECT 1/2 返回 0。接下来,我尝试了SELECT CAST(1/2 AS DOUBLE),但这也返回 0。如何除以 1/2 以返回 0.5?
【问题讨论】:
我的目标是 Presto 0.212 中的两个整数除以两个整数,例如。 G。 1/2。幼稚的方法SELECT 1/2 返回 0。接下来,我尝试了SELECT CAST(1/2 AS DOUBLE),但这也返回 0。如何除以 1/2 以返回 0.5?
【问题讨论】:
我不熟悉 Presto,但我的猜测是,在您提供的示例中,1/2 被评估为整数,然后被转换为双精度。也许类似于SELECT CAST(1 AS DOUBLE)/CAST(2 AS DOUBLE) 的内容,或者您可以将.0 添加到您的数字末尾,例如SELECT 1.0/2.0。我只是在黑暗中开了几枪。
【讨论】:
2.0 不是double,它是decimal(2,1) 类型。这会影响结果:10 / 3e0 打印 3.3333333333333335,而 10 / 3.0 打印 3.3。使用科学记数法或显式类型构造来获得“2 as double”:2e0 或 double '2'。