Aritmetické výrazy
Aritmetické operátory jsou sčítání (+
), odčítání (-
), násobení (*
), dělení (/
), negace (-
) a exponentiace (^
). Dají se použít na operandy typu Int
, BigInt
nebo Double
. Pro integrální typy (Int
a BigInt
) je navíc k dispozici operátor, který počítá modul (%
).
Pro binární operátory musí typ obou operandů odpovídat, s výjimkou exponenci; Exponent pro hodnotu typu BigInt
musí být typu Int
. Typ celého výrazu odpovídá typu levého operandu. Pro exponentaci Int
a BitInt
není chování definováno, pokud je exponent záporný nebo vyžaduje více než 32 bitů (to znamená, že je-li větší než 2147483647).
Dělení a modul pro hodnoty typu Int
a BigInt
následující chování pro záporná čísla:
A |
B |
A / B |
A % B |
---|---|---|---|
5 | 2 | 2 | 1 |
5 | -2 | -2 | 1 |
-5 | 2 | -2 | -1 |
-5 | -2 | 2 | -1 |
To znamená, a % b
že má vždy stejné znaménko jako a
a b * (a / b) + a % b
vždy se rovná a
.
Q# nepodporuje automatické převody mezi aritmetickými datovými typy ani jinými datovými typy. To je důležité zejména pro Result
datový typ a usnadňuje omezení způsobu šíření informací za běhu. Má výhodu v tom, že se vyhne náhodným chybám, jako jsou chyby související se ztrátou přesnosti.