ESQL DECIMAL 数据类型

DECIMAL 数据类型可以精确表示十进制数字。十进制数字有精度和小数位并进行舍入。精度是数字的总位数:
  • 最小精度是 1
  • 最大精度是 34
小数位是十进制小数点右边的数字位数:
  • 最小的小数位 (-exponent) 是 -999,999,999
  • 最大的小数位 (-exponent) 是 +999,999,999

精度和小数位是自动指定的,无法在声明 DECIMAL 时定义。只有强制转换为 DECIMAL 时才可以指定精度和小数位。

小数位、精度和舍入

以下小数位、精度和舍入规则适用于:
  • 除非需要进行舍入以保证不超过最大精度,否则加法或减法结果的小数位就采用两个操作数中较大的小数位。
  • 除非需要进行舍入以保证不超过最大精度,否则乘法结果的小数位就采用两个操作数的小数位之和。
  • 除法结果的精度是精确表示结果所需的位数和最大精度中较小的一个。
  • 所有加、减、乘、除运算都在必要时舍去最后一位有意义的数字,以保证不超过最大精度。
  • 所有自动舍入都是 banker 舍入或半偶数对称舍入。其规则如下:
    • 如果第一个舍弃的数字是 4 或小于 4,则第一个保留的数字不变
    • 如果第一个舍弃的数字是 6 或大于 6,则增大第一个保留的数字
    • 如果第一个舍弃的数字是 5,则增大第一个保留的数字(如果是奇数)或者保持不变(如果是偶数)。因此,1.5 和 2.5 舍入成 2,而 3.5 和 4.5 都舍入成 4。
    • 负数根据同样的规则进行舍入

十进制值

仅包含数字串,并且不用引号括起来,也就是说,既不包含十进制小数点,也不包含指数(例如 12345)的十进制值属于 INTEGER 类型(如果它们足够小,能够表示为整数)。否则便属于 DECIMAL 类型。

由数字串组成(带或不带十进制小数点和指数,例如 123e1),并且不用引号括起来的十进制值属于 FLOAT 类型(如果它们足够小,能够表示为浮点数)。否则便属于 DECIMAL 类型。

由关键字 DECIMAL 和用引号括起来的数字串组成(带或不带十进制小数点和指数)的十进制值属于 DECIMAL 类型,例如,DECIMAL '42'、DECIMAL '1.2346789e+203'。

这种类型的数字串可以具有以下值:
  • “NAN”,不是数字
  • “INF”,“INFINITY”
  • “+INF”,“+INFINITY”
  • “-INF”,“-INFINITY”
  • “MAX”
  • “MIN”
(任何大小写混合)用来表示相应的值。
更新开始注意,如果您不指定足够精度的数字,则返回该 INF,如以下示例中所示:
 SET VAL [equals char] CAST('123456' AS DECIMAL(3,0))
更新结束
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak17820_