DECIMAL/NUMBER
语法:
NUMBER/DECIMAL
NUMBER/DECIMAL(p)
NUMBER/DECIMAL(p,s)
功能:存储高精度浮点数。
取值范围:(-1.0E128, 1.0E128)
p取值范围[1, 38],表示能存储的最大精度。
s取值[-84, 127],表示小数点后面有效数字个数。
若不指定p和s,表示不对小数点后面的数值做限制,最大能存储40位有效数字。
若不指定s或s=0时, 表示number类型没有小数部分。
占用空间:4~24字节。
对应关键字:
DECIMAL
NUMBER
NUMERIC
column_name NUMBER
此时,该列直接存储输入的值,并按最大40位有效数字存储。
column_name NUMBRE(precision, scale)
Gauss100 支持指定Number类型的精度(precision)和小数位(scale),语法格式为:
column_name NUMBRE(precision, scale)
precision表示有效数字个数,其取值范围为[1, 38],scale表示小数点右侧的数据位数,其取值范围为[-84, 127]。若scale为负数,则将小数点左边对应个数的数字约掉。
若仅指定了precision且未指定scale,则scale的默认值为0,即:column_name NUMBRE(precision),此时,scale默认为0。表示没有小数部分。
下表列举了precision和scale对Number类型存储的影响。
输入数据
NUMBER定义
存储结果
1234567.89
NUMBER
1234567.89
1234567.89
NUMBER(12,1)
1234567.9(末尾9被四舍五入)
1234567.61
NUMBER(12,1)
1234567.6
1234567.61
NUMBER(12)
1234568
1234567.61
NUMBER(12,3)
1234567.61
1234567.61
NUMBER(12,6)
错误,精度溢出
1234567.61
NUMBER(12,-2)
1234600
Decimal/Number类型采用变长存储,其长度跟其有效数字有关。