Teradata中的DECIMAL类型

有人可以解释一下我在Teradata中得到的以下结果:

SELECT TYPE(CAST (2.3 AS DECIMAL(18,4)) * CAST (2.3 AS DECIMAL(18,4))  )

结果是:

DECIMAL(18,8)

我期待DECIMAL(18,4)

回答:

每个DBMS在涉及小数的计算方面都有其自己的规则。

Teradata的基本规则是:当您将DECIMALs相加/相减/相除时,所得的分数精度是两个操作数中较大的一个,例如dec(10,2)+dec(10,4)= dec(xx,4)

但是,当您乘以小数位时,例如,decdec(10,2)* dec(10,4)= dec(xx,6)

总体精度还有更多规则(某些规则取决于dbscontrol MAxDecimal设置)。

然后有一个最重要的规则,人们往往会忘记:在每次计算之后,结果都会四舍五入到这个精度。

sel 2.0/3.00 * 100, 100*2.0/3.00;

*** Query completed. One row found. 2 columns returned.

*** Total elapsed time was 1 second.

((2.0/3.00)*100) ((100*2.0)/3.00)

----------------- -----------------

67.00 66.67

迪特尔

以上是 Teradata中的DECIMAL类型 的全部内容, 来源链接: utcz.com/qa/412662.html

回到顶部