Числовые операторы
Типы 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 |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по