Udostępnij za pośrednictwem


Operatory arytmetyczne (F#)

W tym temacie opisano operatory arytmetyczne, które są dostępne w języku F#.

Podsumowanie binarne operatory arytmetyczne

W poniższej tabeli zestawiono operatory arytmetyczne binarne, które są dostępne dla rozpakowanych integralną i zmiennoprzecinkowych typów.

Operator dwuargumentowy

Notatki

+(dodanie, plus)

Niezaznaczone.Możliwe przepełnienia po zsumowaniu numery i suma przekracza maksymalną wartość bezwzględna obsługiwane przez typ.

-(odejmowanie, minus)

Niezaznaczone.Niedomiar możliwe warunek typów niepodpisanego są odejmowane lub gdy wartości zmiennoprzecinkowych są zbyt małe, aby było reprezentowane przez typ.

*(mnożenie, razy)

Niezaznaczone.Możliwe przepełnienia, gdy numery są mnożone i produktu przekracza maksymalną wartość bezwzględna obsługiwane przez typ.

/(rejon, podzielona przez)

Dzielenie przez zero powoduje, że DivideByZeroException dla typów integralną.Dla typów Zmiennoprzecinkowe dzielenie przez zero daje specjalne wartości zmiennoprzecinkowych +Infinity lub -Infinity.Istnieje również możliwe niedopełnienia, gdy liczba zmiennoprzecinkowa jest zbyt mały, aby być reprezentowane przez typ.

%(moduł, mod)

Zwraca resztę operację podziału.Znak wynik jest taka sama, jak znak pierwszego operandu.

**(do potęgi potęgowanie)

Możliwe przepełnienia gdy wynik przekracza maksymalną wartość bezwzględna typu.

Operatora potęgowania działa tylko z typami zmiennoprzecinkowych.

Podsumowanie operatory arytmetyczne jednoargumentowy

W następującej tabeli podsumowano jednoargumentowe operatory arytmetyczne, które są dostępne dla typów integralną i zmiennoprzecinkowych.

Operator jednoargumentowy

Notatki

+(dodatnie)

Można zastosować do dowolnego wyrażenia arytmetycznych.Nie zmienia znak wartości.

-(negację, negatywne)

Można zastosować do dowolnego wyrażenia arytmetycznych.Zmienia znak wartości.

Zachowanie przy przepełnienie lub niedomiar w przypadku typów integralną jest zawijany wokół.Ta opcja powoduje nieprawidłowe wyniki.Przepełnienie całkowitoliczbowe jest potencjalnie poważny problem, który może przyczynić się do kwestii bezpieczeństwa, gdy oprogramowanie nie jest zapisywany na konto dla niego.Jeśli jest istotny dla aplikacji, należy rozważyć użycie checked operatorów w Microsoft.FSharp.Core.Operators.Checked.

Podsumowanie operatory porównywania binarnego

W poniższej tabeli przedstawiono operatory porównania binarne, które są dostępne dla integralną i zmiennoprzecinkowych typów.Te podmioty gospodarcze zwracać wartości typu bool.

Liczby zmiennoprzecinkowe nigdy nie należy bezpośrednio porównać dla równości, ponieważ reprezentacja liczb zmiennoprzecinkowych IEEE nie obsługuje operacji dokładne równości.Dwóch liczb, które można łatwo sprawdzić są równe, sprawdzając, czy kod mógłby faktycznie bit różne reprezentacje.

Operator

Notatki

=(jest równe równości)

Nie jest operatorem przypisania.Jest on używany tylko dla porównania.Jest to rodzajowe operatora.

>(większe niż)

Jest to rodzajowe operatora.

<(mniejsze niż)

Jest to rodzajowe operatora.

>=(większa niż lub równa)

Jest to rodzajowe operatora.

<=(mniejsza niż lub równa)

Jest to rodzajowe operatora.

<>(nie jest równa)

Jest to rodzajowe operatora.

Operatory przeciążony i rodzajowy

Wszystkie operatory, omówione w tym temacie są zdefiniowane w Microsoft.FSharp.Core.Operators obszaru nazw.Niektóre podmioty gospodarcze są definiowane przy użyciu parametrów typu statycznie rozwiązane.Oznacza to, że istnieją oddzielne definicje dla każdego określonego typu, który działa z tego operatora.Wszystkie jednoargumentowe i operatory arytmetyczne i operatory binarne znajdują się w tej kategorii.Operatory porównania mają charakter ogólny i dlatego Praca z dowolnego typu, nie tylko pierwotnych typów arytmetycznych.Dyskryminowanych Unii i typy rekordów mają swoje własne niestandardowe implementacje generowanych przez kompilator F#.Typy klas należy użyć metody Equals.

Rodzajowy operatorów można dostosowywać.Aby dostosować funkcje porównanie, należy zastąpić Equals aby zapewnić porównania równości niestandardowe, a następnie Implementuj IComparable.IComparable Interfejs ma jedną metodę CompareTo metody.

Podmioty gospodarcze i wnioskowanie typu

Użycie operatora w wyrażeniu ogranicza wnioskowanie typu na ten podmiot.Użyj operatorów uniemożliwia również, generalizacji automatyczne, ponieważ wykorzystanie operatorów oznacza arytmetyczny typu.W przypadku braku innych informacji, ustala kompilator F# int jako typ wyrażeń arytmetycznych.To zachowanie można zastąpić, określając innego typu.Zatem typy argumentów i typem powrotu function1 w następującym kodzie są niezamierzone za int, ale typy dla function2 się ich doszukiwać się 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

Zobacz też

Informacje

Odwołanie do symbolu i operatora (F#)

Przeładowanie operatora (F#)

Operatory bitowe (F#)

Operatory logiczne (F#)