数字数据类型

更改开始数值数据类型包括二进制整数、十进制整数、十进制浮点数和浮点数。更改结束

更改开始数字数据类型分类如下:更改结束

更改开始
  • 精确数字数据类型:二进制整数和十进制
  • 十进制浮点
  • 近似数值数据类型:浮点型
更改结束

二进制整数包括小整数、大整数和超大整数。 二进制数是整数的精确表示。 更改开始十进制数字是实数的精确表示,具有固定的精度和比例。更改结束 二进制和十进制数字被认为是精确的数字类型。

更改开始十进制浮点数包括 DECFLOAT(16) 和 DECFLOAT(34),它们能够表示 16 或 34 个有效数字。 十进制浮点数据类型既支持实数的精确表示,也支持实数的近似表示,既不能被视为精确数值类型,也不能被视为近似数值类型。更改结束

浮点包括单精度和双精度。 浮点数是实数的近似值,属于近似数值类型。

所有数字都有符号、精度和刻度。 如果列值是零,则符号为正。 十进制浮点数对于同一个数字和不同的指数有不同的值(例如: 0.0、 0.00、 0.0E5、 1.0、 1.00、 1.0000 )。 精确度是指二进制或十进制数字的总和,不含符号。 刻度是指小数点右侧的二进制或十进制数字的总和。 如果没有小数点,则刻度为0。

小整数(SMALLINT)

小整数是精度为15位的二进制整数。

小整数的范围是 -32768到+32767

整数(INTEGER)

大整数是精度为31位的二进制整数。

大整数的范围是 -2147483648到+2147483647

大整数(BIGINT)

大整数是精度为63位的二进制整数。

大整数的范围是 -9223372036854775808到+9223372036854775807

单精度浮点(REAL)

单个精确浮点数是一个短(32位)浮点数。

单精度浮点数的范围大约是 -7.2E+75 到 7.2E+75。 在这个范围内,最大的负值约为 -5.4E-79 ,最小的正值约为 5.4E-079。

双精度浮点(DOUBLE或FLOAT)

双精度浮点数是一个长(64位)浮点数。

双精度浮点数的范围大约是 -7.2E+75 到 7.2E+75。 在这个范围内,最大的负值约为 -5.4E-79 ,最小的正值约为 5.4E-079。

小数(DECIMAL或NUMERIC)

十进制数是带有隐含小数点的压缩十进制数。

小数点的位置取决于数字的精确度和刻度。 小数部分的位数,即小数部分的数字,不能为负数或大于精度。 最大精度为 31 位。

十进制列的所有数值具有相同的精度和刻度。 十进制变量或十进制列中的数字的范围是 -n+n ,其中 n 是可用精度和刻度表示的最大正数。 最大范围是 1 - 10311031 - 1

十进制浮点(DECFLOAT)

十进制浮点数的最大精度为34位。

十进制浮点数的精度范围是16或34位,指数范围分别是 10-383 至 10+38410-6143 至 10+6144

除了有限数字,十进制浮点数还可以表示以下特殊值之一:

  • 无穷大——表示一个无限大的数值的量值。
  • Quiet NaN ——一个代表不确定结果的值,不会导致无效数字条件。
  • 信号 NaN ——一个代表不确定结果的值,如果在任何数字运算中使用,都会导致无效数字条件。

当一个数字具有这些特殊值之一时,其系数和指数是不确定的。 无穷大的符号很重要(也就是说,正无穷大和负无穷大都是可能的)。 NaN 符号在算术运算中没有任何意义。 INF可以代替INFINITY。

次标准数和下溢

十进制浮点数据类型包含一组非零数字,这些数字不在正常十进制浮点值范围内。 这些数字被称为次正常值。

调整指数小于 E min 4 的非零数称为次正规数。 这些非标准数字可以作为所有运算的运算数,并且可以由任何运算产生。 如果在舍入之前结果小于正常值,则返回小于正常值的情况。

对于次优结果,指数的最小值变为 Emin - (precision-1) ,称为 Etiny ,其中精度为工作精度。 如有必要,结果将四舍五入,以确保指数不小于 Etiny。 如果舍入过程中结果变得不准确,则返回下溢条件。 非正常结果并不总是返回下溢条件,但总是返回非正常条件。

当计算过程中某个数字向下舍入为零时,其指数将为 Etiny。 指数的最大值不受影响。

非正规数的指数的最大值与在运算中不产生非正规数时出现的指数的最小值相同。 当十进制数位系数长度等于精度时,就会出现这种情况。

数字主变量

除少数例外情况外,数字宿主变量可以用所有语言定义。

二进制整数变量可以用所有主机语言定义。

浮点变量可以在所有主机语言中定义。 除Java™外,所有语言都支持 System/390® 浮点格式。 汇编语言、C、C++、PL/I和Java也支持IEEE浮点格式。 在汇编语言、C、C++和PL/I程序中,SQL处理选项FLOAT用于告知 Db2 浮点变量包含的数据是 System/390 浮点格式还是IEEE浮点格式。 浮点主机变量的内容必须与使用FLOAT SQL处理选项指定的格式相匹配。

除 Fortran 外,所有主机语言均可定义十进制变量。

在COBOL中,十进制数字可以用以下格式表示:
  • 十进制打包格式,用USAGE PACKED-DECIMAL或 COMP-3
  • 外部十进制格式,由USAGE DISPLAY with SIGN LEADING SEPARATE表示
  • 由USAGE NATIONAL和SIGN LEADING SEPARATE表示的国家十进制格式

十进制浮点变量可在汇编语言、C、C++、PL/I和Java中定义。

数值字符串表示

在某些情况下可以使用数字值的字符串表示形式。 数值的有效字符串表示必须符合数字常量的规则。

使用的编码方案决定了可用于数值字符串表示的字符串类型。 对于ASCII和EBCDIC,数值字符串表示必须是一个字符串。 对于UNICODE,数值字符串表示可以是字符串或图形字符串。 因此,只有在编码方案为UNICODE时,图形字符串才能用于数值。

当十进制数字转换为字符串时(例如,使用CAST规范),隐式小数点将被语句准备时使用的默认小数分隔符替换。

当字符串转换为十进制值(例如,使用CAST规范)时,在准备语句时使用的默认十进制分隔符将用于解释字符串。

当浮点数或十进制浮点数转换为字符串(例如使用CAST规范)或字符串转换为浮点数或十进制浮点数时,小数点分隔符必须为句点(.)。