Поделиться через


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

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

Operator Description Пример
+ Добавить 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 < 1hnow() < datetime(2100-01-01)
> Больше 0.23 > 0.22, , 10min > 1secnow() > ago(1d)
== Равно 1 == 1
!= Не равно 1 != 0
<= Меньше или равно 4 <= 5
>= Больше или равно 5 >= 4
in Соответствует одному из элементов см. здесь
!in Не соответствует одному из элементов см. здесь

Примечание.

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

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

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

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

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

Операция Результат Description
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() функции.

Комментарий к оператору модуля

Модуло двух чисел всегда возвращается в Kusto "небольшое неотрицательное число". Таким образом, модуло двух чисел, N % D, такое, что: 0 ≤ (N % D) < abs(D).

Например, следующий запрос:

print plusPlus = 14 % 12, minusPlus = -14 % 12, plusMinus = 14 % -12, minusMinus = -14 % -12

Создает следующий результат:

plusPlus минус Плюс plusMinus минусМинус
2 10 2 10