【问题标题】:32- or 64-bits float division with PrestoSQLPrestoSQL 的 32 位或 64 位浮点除法
【发布时间】:2020-03-09 03:53:08
【问题描述】:

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

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

【问题讨论】:

    标签: sql numbers presto trino


    【解决方案1】:

    分割前可以cast()

    要获得 64 位精度:

    select cast(1 as double) / 3
    

    要获得 32 位精度:

    select cast(1 as real) / 3
    

    【讨论】:

      【解决方案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
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-29
      • 2012-10-26
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2011-12-15
      • 2019-01-07
      • 1970-01-01
      相关资源
      最近更新 更多