ITPub博客

首页 > 数据库 > > Gauss 100 数据库数据类型介绍之数值类高精度数值型

Gauss 100 数据库数据类型介绍之数值类高精度数值型

作者:GaussDB_数据库 时间:2020-02-20 15:24:20 0 删除 编辑

高精度数值类型

  • Decimal/Number数据类型能以高精度存储非常大的数字,并能准确地计算。当前实现中Number和Decimal合并为同一类型。

  • Decimal/Number数据类型当前最大能存储40位有效数字。

  • 对于Decimal/Number数据类型,若结果溢出则报错。

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

用户可以按以下方式定义Decimal/Number列:
  • 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类型存储的影响。

      表1 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类型采用变长存储,其长度跟其有效数字有关。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3147725/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19305