Numeriska operatorer

Typerna int, longoch real representerar numeriska typer. Följande operatorer kan användas mellan par av dessa typer:

Operator Beskrivning Exempel
+ Lägg till 3.14 + 3.14, ago(5m) + 5m
- Subtrahera 0.23 - 0.22,
* Multiplicera 1s * 5, 2 * 2
/ Dividera 10m / 1s, 4 / 2
% Modulo 4 % 2
< Less 1 < 10, 10sec < 1h, now() < datetime(2100-01-01)
> Större 0.23 > 0.22, 10min > 1sec, now() > ago(1d)
== Lika med 1 == 1
!= Inte lika med 1 != 0
<= Mindre eller lika med 4 <= 5
>= Större eller lika med 5 >= 4
in Lika med ett av elementen se här
!in Inte lika med något av elementen se här

Anteckning

Om du vill konvertera från en numerisk typ till en annan använder du to*() funktioner. Se till exempel tolong() och toint().

Typregler för aritmetiska åtgärder

Datatypen för resultatet av en aritmetikåtgärd bestäms av operandernas datatyper. Om någon av operanderna är av typen realblir resultatet av typen real. Om båda operanderna har heltalstyper (int eller long) blir resultatet av typen long.

På grund av dessa regler trunkeras resultatet av divisionsåtgärder som endast omfattar heltal till ett heltal, vilket kanske inte alltid är det du vill ha. För att undvika trunkering konverterar du minst ett av heltalsvärdena till realatt använda todouble() innan du utför åtgärden.

Följande exempel illustrerar hur operandtyperna påverkar resultattypen i divisionsåtgärder.

Åtgärd Resultat Description
1.0 / 2 0.5 En av operanderna är av typen real, så resultatet är real.
1 / 2.0 0.5 En av operanderna är av typen real, så resultatet är real.
1 / 2 0 Båda operanderna är av typen int, så resultatet är int. Heltalsdelning sker och decimaltecknet trunkeras, vilket resulterar i i 0 stället för 0.5, som man kan förvänta sig.
real(1) / 2 0.5 För att undvika trunkering på grund av heltalsdelning konverterades först en av int operanderna till att real använda real() funktionen.

Kommentar om modulo-operatorn

Modulo för två tal returnerar alltid ett "litet icke-negativt tal" i Kusto. Således är modulo av två tal, N % D, sådan att: 0 ≤ (N % D) < abs(D).

Till exempel följande fråga:

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

Ger det här resultatet:

plusPlus minusPlus plusMinus minusMinus
2 10 2 10