跳到主要内容

数值

数值宽度

名称缩写长度(Bit)取之范围
字节型byte8-128 ~ 127
短整型sort16-32768 ~ 32768
整型int32-2147483648 ~ 2147483648
长整型long64-9233372036854477808 ~ 9233372036854477808
浮点型float32-3.40292347E+38 ~ 3.40292347E+38
双精度double64-1.79769313486231570E+308 ~ 1.79769313486231570E+308
大整数BigInt整型,正无穷 ~ 负无穷
大浮点数Decimal浮点数,正无穷 ~ 负无穷

默认数值宽度

数值表示的默认宽度,举例:var = 235 这个数即可是 byte 的也可能是 int 类型。 默认宽度是指在 DataQL 查询语句中,定义的数字类型数据所使用的:默认类型。

  • 整数:byteshortint(默认)longbig
  • 浮点数:floatdouble(默认)big
修改默认数值计算宽度
hint MIN_DECIMAL_WIDTH = 'double'
hint MIN_INTEGER_WIDTH = 'int'
提示

float 或者 double,由于其自身存储特性导致在做运算时出现精度丢失。这时建议将 MIN_DECIMAL_WIDTH 宽度提升为 big。 这样可以将浮点数就会以 Decimal 方式进行计算以解决精度丢失问题,但要注意性能损耗。

舍入问题

DataQL 两个浮点数计算时会默认保留 20 位小数。多余的小数部分将会以 四舍五入 方式进行进位。

修改修改浮点数计算舍入精度使用的 DataQL 语句

  • hint MAX_DECIMAL_DIGITS = 20

更换舍入规则使用的 DataQL 语句

  • hint NUMBER_ROUNDING = 'HALF_EVEN'

可选的舍入选项为(参见Hint:NUMBER_ROUNDING):

选项值默认含义
UP向远离零的方向舍入。舍弃非零部分,并将非零舍弃部分相邻的一位数字加一
DOWN向接近零的方向舍入。舍弃非零部分,同时不会非零舍弃部分相邻的一位数字加一,采取截取行为
CEILING向正无穷的方向舍入。如果为正数,舍入结果同 ROUND_UP 一致;如果为负数,舍入结果同 ROUND_DOWN 一致

注意:此模式不会减少数值大小
FLOOR向负无穷的方向舍入。如果为正数,舍入结果同 ROUND_DOWN 一致;如果为负数,舍入结果同 ROUND_UP 一致

注意:此模式不会增加数值大小
HALF_UP四舍五入 向 最接近 的数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式

注意:如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同
HALF_DOWN五舍六入 向 最接近 的数字舍入,如果与两个相邻数字的距离相等,则为向下舍入的舍入模式

注意:如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同
HALF_EVEN向 最接近 的数字舍入,如果与两个相邻数字的距离相等,则相邻的偶数舍入

如果舍弃部分左边的数字奇数,则舍入行为与 ROUND_HALF_UP 相同;
如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。
注意:在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。此舍入模式也称为 银行家舍入法,主要在美国使用。
四舍六入,五分两种情况,如果前一位为奇数,则入位,否则舍去。
UNNECESSARY断言请求的操作具有精确的结果,因此不需要舍入

如果对获得精确结果的操作指定此舍入模式,则抛出 ArithmeticException