Числовые операторы

Типы int, longи real представляют числовые типы. Между парами этих типов можно использовать следующие операторы:

Оператор Описание Пример
+ Add 3.14 + 3.14, ago(5m) + 5m
- Subtract 0.23 - 0.22,
* Multiply 1s * 5, 2 * 2
/ Деление 10m / 1s, 4 / 2
% Modulo 4 % 2
< Меньше 1 < 10, 10sec < 1h, now() < datetime(2100-01-01)
> Больше 0.23 > 0.22, 10min > 1sec, now() > ago(1d)
== Равно 1 == 1
!= Не равно 1 != 0
<= Меньше или равно 4 <= 5
>= Больше или равно 5 >= 4
in Соответствует одному из элементов см. здесь
!in Не соответствует одному из элементов см. здесь

Примечание

Для преобразования из одного числового типа в другой используйте to*() функции. Например, см. класс tolong() и тип toint().

Правила типов для арифметических операций

Тип данных результата арифметической операции определяется типами данных операндов. Если один из операндов имеет тип real, результат будет иметь тип real. Если оба операнда имеют целочисленные типы (int или long), результат будет иметь тип long.

Из-за этих правил результат операций деления, которые включают только целые числа, будет усечен до целого числа, что не всегда может быть нужным. Чтобы избежать усечения, преобразуйте по крайней мере одно из целочисленных значений real в с помощью todouble() перед выполнением операции.

В следующих примерах показано, как типы операндов влияют на тип результата в операциях деления.

Операция Результат Описание
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 Чтобы избежать усечения из-за целочисленного деления, один из int операндов сначала был преобразован в real использование real() функции .

Комментарий к оператору modulo

По модулю двух чисел в 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