数值
数值宽度
名称 | 缩写 | 长度(Bit) | 取之范围 |
---|---|---|---|
字节型 | byte | 8 | -128 ~ 127 |
短整型 | sort | 16 | -32768 ~ 32768 |
整型 | int | 32 | -2147483648 ~ 2147483648 |
长整型 | long | 64 | -9233372036854477808 ~ 9233372036854477808 |
浮点型 | float | 32 | -3.40292347E+38 ~ 3.40292347E+38 |
双精度 | double | 64 | -1.79769313486231570E+308 ~ 1.79769313486231570E+308 |
大整数 | BigInt | 整型,正无穷 ~ 负无穷 | |
大浮点数 | Decimal | 浮点数,正无穷 ~ 负无穷 |
默认数值宽度
数值表示的默认宽度,举例:var = 235
这个数即可是 byte
的也可能是 int
类型。
默认宽度是指在 DataQL 查询语句中,定义的数字类型数据所使用的:默认类型。
- 整数:
byte
、short
、int(默认)
、long
、big
- 浮点数:
float
、double(默认)
、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 |