浮点类型
GaussDB 100支持基本的双精度浮点数据类型double,该类型遵循IEEE 754标准二进制浮点数算术的一般实现,外加下层处理器、操作系统和编译器对它的支持。
该数据类型是不精确的、变精度的数字类型,不精确意味着一些数值不能精确地转换成内部格式并且是以近似值存储的,因此存储后再把数据打印出来可能有一些差异。因此使用该数据类型时需要注意以下几点:
- 如果要求精确的计算(比如金融业务),应使用Number/Decimal类型。
- 对两个浮点数值进行比较时,可能不会得出预期的结果。
- 在并行查询中,数据行不是按顺序读出,因此每次对含有浮点数的列求和(sum)、求均值(avg)等时,可能会得出不同的结果。
- 特别注意,在较大浮点数加上/减去一个较小浮点数时,由于精度不够会导致结果不符。
BINARY_DOUBLE
语法:
BINARY_DOUBLE
功能:存储64位双精度浮点数。
占用空间:8字节。
取值范围:[-1.79E+308, +1.79E+308]
DOUBLE
语法:
DOUBLE
功能:
- USE_NATIVE_DATATYPE=TRUE时映射为BINARY_DOUBLE类型。
- USE_NATIVE_DATATYPE = FALSE时映射为NUMBER类型。
对应关键字:
- REAL
- DOUBLE
- FLOAT
- BINARY_DOUBLE
FLOAT
语法:
FLOAT
功能:
- USE_NATIVE_DATATYPE=TRUE时映射为BINARY_DOUBLE类型。
- USE_NATIVE_DATATYPE = FALSE时映射为NUMBER类型。
对应关键字:
- REAL
- DOUBLE
- FLOAT
- BINARY_DOUBLE
REAL
语法:
REAL
功能:
- USE_NATIVE_DATATYPE=TRUE时映射为BINARY_DOUBLE类型。
- USE_NATIVE_DATATYPE = FALSE时映射为NUMBER类型。
占用空间:8字节。
对应关键字:
- REAL
- DOUBLE
- FLOAT
- BINARY_DOUBLE
说明:
- 由于浮点数不精确,其上下界也不是一个太精确的值,因此在测试其上下界时,要特别注意。 不能直接使用select cast(1E308 as real) + 1 from SYS_DUMMY;来测试,这是计算机底层的定义浮点数的问题,与GaussDB 100的具体实现无关。
- 对于double数据类型,若结果溢出则报错,报错信息为GS-00659:%s out of range。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论