Udostępnij za pośrednictwem


Operatory liczbowe

intTypy , longi real reprezentują typy liczbowe. Następujące operatory mogą być używane między parami tych typów:

Operator opis Przykład
+ Dodaj 3.14 + 3.14, ago(5m) + 5m
- Subtract 0.23 - 0.22,
* Razy 1s * 5, 2 * 2
/ Podziel 10m / 1s, 4 / 2
% Modulo 4 % 2
< Mniejsze 1 < 10, , 10sec < 1hnow() < datetime(2100-01-01)
> Większe 0.23 > 0.22, , 10min > 1secnow() > ago(1d)
== Równa się 1 == 1
!= Nie równa się 1 != 0
<= Mniejsze lub równe 4 <= 5
>= Większe lub równe 5 >= 4
in Równa się jednemu z elementów zobacz tutaj
!in Nie równa się żadnej z elementów zobacz tutaj

Uwaga

Aby przekonwertować z jednego typu liczbowego na inny, użyj to*() funkcji. Na przykład zobacz tolong() i toint().

Reguły typów dla operacji arytmetycznych

Typ danych wyniku operacji arytmetycznej jest określany przez typy danych operandów. Jeśli jeden z operandów ma typ real, wynik będzie typu real. Jeśli oba operandy mają typy całkowite (int lub long), wynik będzie typu long.

Ze względu na te reguły wynik operacji dzielenia, które obejmują tylko liczby całkowite, zostanie obcięty z liczbą całkowitą, co może nie zawsze być tym, co chcesz. Aby uniknąć obcinania, przed wykonaniem operacji przekonwertuj co najmniej jedną z wartości całkowitych na real wartość todouble().

W poniższych przykładach pokazano, jak typy operandów wpływają na typ wyniku w operacjach dzielenia.

Operacja Wynik opis
1.0 / 2 0.5 Jednym z operandów jest typ real, więc wynik to real.
1 / 2.0 0.5 Jednym z operandów jest typ real, więc wynik to real.
1 / 2 0 Oba operandy są typu int, więc wynik to int. Występuje podział liczby całkowitej, a liczba dziesiętna jest obcięta, co powoduje 0 zamiast 0.5, jak można się spodziewać.
real(1) / 2 0.5 Aby uniknąć obcinania z powodu dzielenia liczb całkowitych, jeden z int operandów został po raz pierwszy przekonwertowany na real przy użyciu real() funkcji .

Komentowanie operatora modulo

Modulo dwóch liczb zawsze zwraca w Kusto "małą liczbę nie ujemną". W związku z tym modulo dwóch liczb, N % D, jest taki, że: 0 ≤ (N % D) < abs(D).

Na przykład następujące zapytanie:

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

Tworzy ten wynik:

plusPlus minusPlus plusMinus minusMinus
2 10 2 10