数字类型和精度 - Amazon Kinesis Data Analytics
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

数字类型和精度

对于 DECIMAL,我们最多支持 18 位的精度和小数位数。

精度指定可在列中存储的位于小数点左侧和右侧的最大小数位数。您可以指定从 1 位到 18 位的精度或使用 18 位的默认精度。

小数位数指定可存储在小数点右侧的最大位数。小数位数必须小于或等于精度。您可以指定从 0 位到 18 位的小数位数,或使用 0 位的默认小数位数。

除法规则

将 p1 和 s1 作为第一个操作数 (如 DECIMAL (10,1)) 的精度和小数位数。

将 p2 和 s2 作为第二个操作数 (如 DECIMAL (10,3)) 的精度和小数位数。

将 p 和 s 作为结果的精度和小数位数。

将 d 作为结果中的整数位数。然后,结果类型为小数,如下所示:

d = p1 - s1 + s2

D = 10 - 1 + 3

结果中的整数位数 = 6

s <= MAX (6, s1 + p2 +1)

S <= MAX (6, 1 + 10 + 1)

结果的小数位数 = 14

p = d + s

结果的精度 = 18

精度和小数位数以其最大值 (18,其中小数位数不能大于精度) 为上限。

优先顺序为:先提供至少第一个参数 (s >= s1) 的小数位数,然后提供足够多的整数位数,以表示没有溢出的结果

乘法规则

将 p1 和 s1 作为第一个操作数 DECIMAL (10,1) 的精度和小数位数。

将 p2 和 s2 作为第二个操作数 DECIMAL (10,3) 的精度和小数位数。

将 p 和 s 作为结果的精度和小数位数。

然后,结果类型为小数,如下所示:

p = p1 + p2

p = 10 + 10

结果的精度 = 18

s = s1 + s2

s = 1 + 3

结果的小数位数 = 4

加法或减法规则

类型推理策略,其中调用的结果类型是两个精确数字操作数的小数部分之和,此时至少有一个操作数为小数。

将 p1 和 s1 作为第一个操作数 DECIMAL (10,1) 的精度和小数位数。

将 p2 和 s2 作为第二个操作数 DECIMAL (10,3) 的精度和小数位数。

将 p 和 s 作为结果的精度和小数位数,如下所示:

s = max(s1, s2)

s = max (1,3)

结果的小数位数 = 3

p = max(p1 - s1, p2 - s2) + s + 1

p = max(10-1,10-3) + 3 + 1

结果的精度 = 11

s 和 p 以其最大值为上限