DOUBLE_PRECISION 或 DOUBLE 标量函数

DOUBLE_PRECISION 和 DOUBLE 函数将返回数字的双精度浮点表示法或数字的字符串表示法。

数字到双精度

Read syntax diagramSkip visual syntax diagram DOUBLE_PRECISIONDOUBLE (numeric-expression)

字符串到双精度

Read syntax diagramSkip visual syntax diagram DOUBLE_PRECISIONDOUBLE (string-expression)

该模式是 SYSIBM。

数字到双精度
numeric-expression
返回任何内置数字数据类型的值的表达式。

结果与将自变量分配给双精度浮点列或变量时出现的数字相同。 如果自变量的数字值不在双精度浮点范围内,那么将返回错误 (SQLSTATE 22003)。

字符串到双精度
string-expression
返回表示数字的字符串(包括 FOR BIT DATA)的表达式。 此表达式的数据类型不能是 CLOB , BLOB 或 DBCLOB (SQLSTATE 42884)。

结果是与语句 CAST(string-expression AS DOUBLE PRECISION) 结果相同的数字。 消除前导空格和尾部空格,结果字符串必须遵循用于形成有效数字常量 (SQLSTATE 22018) 的规则。 如果自变量的数字值不在双精度浮点范围内,那么将返回错误 (SQLSTATE 22003)。

该函数的结果是双精度浮点数。 如果自变量可以为空,那么结果可以为空;如果自变量为空,那么结果为空值。

注意

  • 应该使用 CAST 规范来提高应用程序的可移植性。
  • FLOAT 是 DOUBLE_PRECISION 和 DOUBLE 的同义词。
  • SYSFUN 版本的 DOUBLE (string_expression) 继续可用。

示例

使用 EMPLOYEE 表,查找佣金不为零的员工的工资与佣金的比率。 涉及的列(SALARY 和 COMM)具有 DECIMAL 数据类型。 为了消除超出范围结果的可能性,将 DOUBLE 应用于 SALARY,以便采用浮点执行除法:
   SELECT EMPNO, DOUBLE(SALARY)/COMM
     FROM EMPLOYEE
     WHERE COMM > 0