【问题标题】:Teradata: Division and large decimalsTeradata:除法和大小数
【发布时间】:2020-04-17 20:44:14
【问题描述】:

我正在尝试将两个小数 (15,2) 数字相除并返回 15 位的高精度小数,但我不断收到 [2616] 小数点后 10 位以外的数字溢出错误,还有其他方法吗?写这个以获得句点右边 15 位的小数结果?

选择 (cast(19983.74 as decimal(15,2))*1.0000000000000)/(cast(15897.40 as decimal(15,2))*1.0000000000000)

【问题讨论】:

    标签: decimal overflow teradata division divide


    【解决方案1】:

    对于更复杂的计算,我更喜欢将第一个操作数转换为 NUMBER,这会产生最大可能的精度:

    SELECT Cast(19983.74 AS NUMBER)/15897.40
    
    1.25704454816510875992300627775611106219
    

    最后回滚到你需要的任何东西:

    SELECT Cast(Cast(19983.74 AS NUMBER)/15897.40 AS DECIMAL(38,15))
    
    1.257044548165109
    

    【讨论】:

      【解决方案2】:

      请参阅Teradata Documentation。结果精度的默认值取决于 MaxDecimal 设置,但大于 MaxDecimal 设置的 CAST 将覆盖。

      SELECT CAST(19983.74 AS DECIMAL(38,15))/15897.40
      

      【讨论】:

        猜你喜欢
        • 2015-11-14
        • 1970-01-01
        • 2019-02-13
        • 1970-01-01
        • 2017-11-10
        • 2015-06-29
        • 1970-01-01
        • 2017-01-20
        • 2020-04-20
        相关资源
        最近更新 更多