Sdílet prostřednictvím


Aritmetické operátory (F#)

Toto téma popisuje aritmetické operátory, které jsou k dispozici v jazyce F#.

Souhrn binární aritmetické operátory

Následující tabulka shrnuje binární aritmetické operátory, které jsou k dispozici pro typy Variant nedílnou a plovoucí desetinnou čárkou.

Binární operátor

Poznámky

+(navíc plus)

Nezaškrtnuté.Možné přetečení při sečtení čísel a součet překračuje maximální absolutní hodnota podporovaného typu.

-(odčítání, minus)

Nezaškrtnuté.Možné podtečení podmínka se odečtou nepodepsané typy nebo jsou příliš malé, aby typ hodnoty s plovoucí desetinnou čárkou.

*(násobení, časy)

Nezaškrtnuté.Možné přetečení při čísla jsou vynásobena a produktu překračuje maximální absolutní hodnota podporovaného typu.

/(divize děleno)

Dělení nulovou příčiny DivideByZeroException pro typy integrálů.Typy s plovoucí desetinnou čárkou, dělení nulou nabízí speciální hodnoty s plovoucí desetinnou čárkou +Infinity nebo -Infinity.Je také možné podtečení podmínku po příliš malé a nelze podle typu číslo s plovoucí desetinnou čárkou.

%(modul, mod)

Vrátí zbytek operace rozdělení.Znaménko výsledku je stejné jako znaménko prvního operandu.

**(umocnění výkonu)

Pokud výsledek překročí maximální absolutní hodnota typu možného přetečení podmínka.

Operátor umocnění pracuje pouze s typy s plovoucí desetinnou čárkou.

Souhrn aritmetický unární operátory

Následující tabulka shrnuje unární aritmetické operátory, které jsou k dispozici pro typy nedílnou a plovoucí desetinnou čárkou.

Unární operátor

Poznámky

+(kladné)

Lze použít libovolný aritmetický výraz.Znaménko hodnoty nezmění.

-(negace, negativní)

Lze použít libovolný aritmetický výraz.Změní znaménko hodnoty.

Chování při přetečení nebo podtečení u typů je okolo.To způsobuje nesprávný výsledek.Přetečení celého čísla je potenciálně závažné potíže, které mohou přispět k zabezpečení při software zapisuje na jeho účet.Pokud se týkají aplikace, zvažte použití kontrolované subjekty v Microsoft.FSharp.Core.Operators.Checked.

Souhrn binární operátory porovnání

Následující tabulka obsahuje binární relační operátory, které jsou k dispozici pro typy nedílnou a plovoucí desetinnou čárkou.Tyto operátory vracet hodnoty typu bool.

Desetinná čísla nikdy se porovná přímo pro rovnost, protože reprezentace s plovoucí desetinnou čárkou IEEE nepodporuje operaci přesné rovnosti.Dvě čísla, které lze snadno ověřit kontrolou kód se rovná skutečně mít zastoupení různých bit.

Operátor

Poznámky

=(rovnost, rovná se)

Operátor přiřazení není.Používá se pouze pro srovnání.Toto je obecný operátor.

>(větší než)

Toto je obecný operátor.

<(menší než)

Toto je obecný operátor.

>=(větší než nebo rovno)

Toto je obecný operátor.

<=(menší než nebo rovno)

Toto je obecný operátor.

<>(není rovno)

Toto je obecný operátor.

Přetížená a obecné hospodářské subjekty

Všechny operátory uvedené v tomto tématu jsou definovány v Microsoft.FSharp.Core.Operators oboru názvů.Některé operátory jsou definovány pomocí parametrů typu staticky vyřešen.To znamená, že jsou jednotlivé definice pro každý typ pracuje s tímto operátorem.V této kategorii jsou všechny unárních a binárních operátorů aritmetické a bitového.Operátory porovnání jsou obecné a proto pracovat libovolný typ pouze primitivní typy aritmetické.Discriminated unie a typy záznamů mají své vlastní vlastní implementace, které jsou generovány kompilátor F#.Typy tříd pomocí metody Equals.

Obecný operátory jsou upravitelné.Chcete-li přizpůsobit funkce porovnání přepsat Equals a pak implementovat vlastní porovnání vlastní rovnosti IComparable.IComparable Rozhraní má jedinou metodu CompareTo metoda.

Operátory a odvození typu

Použití operátor ve výrazu omezuje odvození typu na tento operátor.Použití operátorů také zabrání automatické generalizace protože znamená použití operátorů aritmetické typu.Neexistují žádné další informace, odvodí kompilátor F# int jako typ aritmetické výrazy.Toto chování lze potlačit zadáním jiného typu.Tedy typy argumentů a návratový typ function1 v následujícím kódu odvodit se int, ale typy pro function2 jsou odvodit se float.

// x, y and return value inferred to be int 
// function1: int -> int -> int 
let function1 x y = x + y

// x, y and return value inferred to be float 
// function2: float -> float -> float 
let function2 (x: float) y = x + y

Viz také

Referenční dokumentace

Referenční dokumentace symbolů a operátorů (F#)

Přetížení operátoru (F#)

Bitové operátory (F#)

Logické operátory (F#)