DECFLOAT 标量函数

DECFLOAT 函数返回不同数据类型的值的十进制浮点表示。

数字到十进制浮点数

Read syntax diagramSkip visual syntax diagram DECFLOAT ( numeric-expression ,34,16 )

字符到十进制浮点数

Read syntax diagramSkip visual syntax diagram DECFLOAT ( string-expression ,34,decimal-character,16,decimal-character )

布尔值到十进制浮点数

Read syntax diagramSkip visual syntax diagram DECFLOAT ( boolean-expression ,34,16 )

该模式是 SYSIBM。

numeric-expression
返回任何内置数值数据类型的值的表达式。
string-expression
返回一个值的表达式,该值是长度不大于字符常量的最大长度的数字的字符串或 Unicode 图形字符串表示法。 字符串表达式的数据类型不得为 CLOB 或 DBCLOB (SQLSTATE 42884)。 将从字符串中除去前导和尾部空格。 生成的子串将转换为大写,并且必须符合用于形成整数,十进制,浮点或十进制浮点常量的规则 (SQLSTATE 22018) 并且不大于 42 字节 (SQLSTATE 42820)。
布尔表达式
返回布尔值 (TRUE 或 FALSE) 的表达式。 结果为 1 (对于 TRUE) 或 0 (对于 FALSE)。
34 或 16
指定结果的精度位数。 缺省值为 34。
十进制字符
指定用于从数字的整个部分定界 character-expression 中的十进制数字的单字节字符常量。 字符不能是数字,加号 (+) ,减号 (-) 或空白,并且最多可以在 character-expression中出现一次。

结果

结果是由 CAST(string-expression AS DECFLOAT(n))CAST(numeric-expression AS DECFLOAT(n))生成的相同数字。 将从字符串中除去前导和尾部空格。

该函数的结果是具有隐式或显式指定的精度位数的十进制浮点数。 如果第一个参数可以为空值,那么结果可以为空值;如果第一个参数为空值,则结果为空值。

必要时,会将源舍入为目标的精度。 CURRENT DECFLOAT ROUNDING MODE 专用寄存器确定舍入方式。

注意

  • 提高应用程序的可移植性: 如果第一个自变量是数字,或者如果第一个自变量是字符串且指定了长度自变量,请使用 CAST 规范 而不是此函数来提高应用程序的可移植性。
  • 所有数字值都解释为整数,十进制或浮点常量,然后强制转换为十进制浮点数。 使用浮点常量可能会导致舍入错误,因此强烈建议不要这样做。 请改为使用 DECFLOAT 函数的字符串到十进制浮点版本。

示例

  • 示例 1: 使用 DECFLOAT 函数以强制在 EMPLOYEE 表中的 EDLEVEL 列 (数据类型 = SMALLINT) 的选择列表中返回 DECFLOAT 数据类型。 EMPNO 列也应显示在选择列表中。
    SELECT EMPNO, DECFLOAT(EDLEVEL,16) 
    FROM EMPLOYEE 
  • 示例 2: 以下语句返回数据类型 DECFLOAT 的值 1。
       values DECFLOAT(TRUE)
  • 示例 3: 以下语句返回数据类型 DECFLOAT 的值 0。
       values DECFLOAT(3>3)