数值运算符
类型 int
、long
和 real
表示数值类型。
可以在这些类型对之间使用以下运算符:
运算符 | 说明 | 示例 |
---|---|---|
+ |
添加 | 3.14 + 3.14 ,ago(5m) + 5m |
- |
减 | 0.23 - 0.22 , |
* |
相乘 | 1s * 5 ,2 * 2 |
/ |
除 | 10m / 1s ,4 / 2 |
% |
取模 | 4 % 2 |
< |
Less | 1 < 10 ,10sec < 1h ,now() < datetime(2100-01-01) |
> |
Greater | 0.23 > 0.22 ,10min > 1sec ,now() > ago(1d) |
== |
等于 | 1 == 1 |
!= |
不等于 | 1 != 0 |
<= |
Less or Equal | 4 <= 5 |
>= |
Greater or Equal | 5 >= 4 |
in |
等于某个元素 | 请参阅此处 |
!in |
不等于任何元素 | 请参阅此处 |
算术运算的类型规则
算术运算结果的数据类型由操作数的数据类型确定。 如果其中一个操作数的类型为 real
,则结果的类型为 real
。 如果两个操作数都是整数类型(int
或 long
),则结果将为类型 long
。
鉴于这些规则,仅涉及整数的除法运算结果将被截断为整数,而它可能并不总是你所需要的。 若要避免结果被截断,请在执行操作之前,使用 todouble() 将至少一个整数值转换为 real
。
以下示例演示操作数类型如何影响除法运算中的结果类型。
操作 | 结果 | 说明 |
---|---|---|
1.0 / 2 |
0.5 |
其中一个操作数的类型为 real ,因此结果为 real 。 |
1 / 2.0 |
0.5 |
其中一个操作数的类型为 real ,因此结果为 real 。 |
1 / 2 |
0 |
两个操作数的类型都是 int ,因此结果为 int 。 此时会进行整数除法,并且会截断小数,因此会按预期生成 0 而不是 0.5 。 |
real(1) / 2 |
0.5 |
若要避免由整数除法引起的截断,请使用 real() 函数先将其中一个 int 操作数转换为 real 。 |
与取模运算符有关的注释
两个数字的取模始终在 Kusto 中返回一个小的非负数。 因此,两个数字的取模(N % D)如下:0 ≤ (N % D) < abs(D)。
例如,以下查询:
print plusPlus = 14 % 12, minusPlus = -14 % 12, plusMinus = 14 % -12, minusMinus = -14 % -12
生成以下结果:
plusPlus | minusPlus | plusMinus | minusMinus |
---|---|---|---|
2 | 10 | 2 | 10 |