MidpointRounding Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje strategii, kterou by matematické metody zaokrouhlování měly použít k zaokrouhlení čísla.
public enum class MidpointRounding
public enum MidpointRounding
[System.Runtime.InteropServices.ComVisible(true)]
public enum MidpointRounding
type MidpointRounding =
[<System.Runtime.InteropServices.ComVisible(true)>]
type MidpointRounding =
Public Enum MidpointRounding
- Dědičnost
- Atributy
Pole
| Name | Hodnota | Description |
|---|---|---|
| ToEven | 0 | Strategie zaokrouhlování na nejbližší číslo a když je číslo v polovině mezi dvěma dalšími, zaokrouhlí se směrem k nejbližšímu sudýmu číslu. |
| AwayFromZero | 1 | Strategie zaokrouhlování na nejbližší číslo a když je číslo v polovině mezi dvěma dalšími, zaokrouhlí se směrem k nejbližšímu číslu, které je daleko od nuly. |
| ToZero | 2 | Strategie směrového zaokrouhlování směrem k nule, s výsledkem nejblíže a bez větší velikosti než nekonečně přesný výsledek. |
| ToNegativeInfinity | 3 | Strategie zaokrouhlení směrem dolů s výsledkem nejbližším a žádným větším než nekonečně přesný výsledek. |
| ToPositiveInfinity | 4 | Strategie zaokrouhlení směrem nahoru, s výsledkem nejblíže a ne méně než nekonečně přesný výsledek. |
Příklady
Následující příklad ukazuje metodu Math.Round ve spojení s výčtem MidpointRounding :
decimal result;
// Round a positive value using different strategies.
// The precision of the result is 1 decimal place.
result = Math.Round(3.45m, 1, MidpointRounding.ToEven);
Console.WriteLine($"{result} = Math.Round({3.45m}, 1, MidpointRounding.ToEven)");
result = Math.Round(3.45m, 1, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result} = Math.Round({3.45m}, 1, MidpointRounding.AwayFromZero)");
result = Math.Round(3.47m, 1, MidpointRounding.ToZero);
Console.WriteLine($"{result} = Math.Round({3.47m}, 1, MidpointRounding.ToZero)\n");
// Round a negative value using different strategies.
// The precision of the result is 1 decimal place.
result = Math.Round(-3.45m, 1, MidpointRounding.ToEven);
Console.WriteLine($"{result} = Math.Round({-3.45m}, 1, MidpointRounding.ToEven)");
result = Math.Round(-3.45m, 1, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result} = Math.Round({-3.45m}, 1, MidpointRounding.AwayFromZero)");
result = Math.Round(-3.47m, 1, MidpointRounding.ToZero);
Console.WriteLine($"{result} = Math.Round({-3.47m}, 1, MidpointRounding.ToZero)\n");
/*
This code example produces the following results:
3.4 = Math.Round(3.45, 1, MidpointRounding.ToEven)
3.5 = Math.Round(3.45, 1, MidpointRounding.AwayFromZero)
3.4 = Math.Round(3.47, 1, MidpointRounding.ToZero)
-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
-3.4 = Math.Round(-3.47, 1, MidpointRounding.ToZero)
*/
Dim result As Decimal = 0D
Dim posValue As Decimal = 3.45D
Dim negValue As Decimal = -3.45D
' Round a positive value using different strategies.
' The precision of the result is 1 decimal place.
result = Math.Round(posValue, 1, MidpointRounding.ToEven)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)",
result, posValue)
result = Math.Round(posValue, 1, MidpointRounding.AwayFromZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)",
result, posValue)
result = Math.Round(posValue, 1, MidpointRounding.ToZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToZero)",
result, posValue)
Console.WriteLine()
' Round a negative value using different strategies.
' The precision of the result is 1 decimal place.
result = Math.Round(negValue, 1, MidpointRounding.ToEven)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToEven)",
result, negValue)
result = Math.Round(negValue, 1, MidpointRounding.AwayFromZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.AwayFromZero)",
result, negValue)
result = Math.Round(negValue, 1, MidpointRounding.ToZero)
Console.WriteLine("{0,4} = Math.Round({1,5}, 1, MidpointRounding.ToZero)",
result, negValue)
Console.WriteLine()
'This code example produces the following results:
'
' 3.4 = Math.Round(3.45, 1, MidpointRounding.ToEven)
' 3.5 = Math.Round(3.45, 1, MidpointRounding.AwayFromZero)
' 3.4 = Math.Round(3.45, 1, MidpointRounding.ToZero)
'
' -3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
' -3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
' -3.4 = Math.Round(-3.45, 1, MidpointRounding.ToZero)
'
Poznámky
Použijte výčet MidpointRounding s odpovídajícími přetíženími Math.Round, MathF.Round a Decimal.Round pro zajištění větší kontroly nad procesem zaokrouhlování.
Existují dvě celkové strategie zaokrouhlování – zaokrouhlení na nejbližší a směrované zaokrouhlení – a každé pole výčtu se účastní přesně jedné z těchto strategií.
Zaokrouhlení na nejbližší
Fields:
Operace zaokrouhlení na nejbližší přebírá původní číslo s implicitní nebo zadanou přesností; zkontroluje další číslici, která je s danou přesností plus jedna; a vrátí nejbližší číslo se stejnou přesností jako původní číslo. U kladných čísel platí, že pokud je další číslice od 0 do 4, nejbližší číslo je směrem k zápornému nekonečnu. Pokud je další číslice od 6 do 9, nejbližší číslo je směrem k kladnému nekonečnu. U záporných čísel platí, že pokud je další číslice od 0 do 4, nejbližší číslo je směrem k kladnému nekonečnu. Pokud je další číslice od 6 do 9, nejbližší číslo je směrem k zápornému nekonečnu.
Pokud je další číslice od 0 do 4 nebo 6 až 9, MidpointRounding.AwayFromZeroMidpointRounding.ToEven nemá vliv na výsledek operace zaokrouhlení. Pokud je ale další číslice 5, což je střední bod mezi dvěma možnými výsledky a všechny zbývající číslice jsou nula nebo neexistují žádné zbývající číslice, nejbližší číslo je nejednoznačné. V tomto případě režimy zaokrouhlování na nejbližší v MidpointRounding umožňují určit, zda operace zaokrouhlování vrátí nejbližší číslo od nuly nebo nejbližší sudé číslo.
Následující tabulka ukazuje výsledky zaokrouhlení některých záporných a kladných čísel s použitím režimů zaokrouhlení na nejbližší. Přesnost použitá k zaokrouhlení čísel je nula, což znamená, že číslo za desetinnou čárkou ovlivňuje operaci zaokrouhlování. Například pro číslo -2,5 je číslice za desetinnou čárkou 5. Protože je tato číslice střední bod, můžete použít MidpointRounding hodnotu k určení výsledku zaokrouhlení. Pokud AwayFromZero je zadáno, vrátí se -3, protože je nejbližší číslo od nuly s přesností nuly. Pokud ToEven je zadáno, -2 se vrátí, protože se jedná o nejbližší sudé číslo s přesností nuly.
| Původní číslo | AwayFromZero | ToEven |
|---|---|---|
| 3.5 | 4 | 4 |
| 2.8 | 3 | 3 |
| 2.5 | 3 | 2 |
| 2.1 | 2 | 2 |
| -2.1 | -2 | -2 |
| -2.5 | -3 | -2 |
| -2.8 | -3 | -3 |
| -3.5 | -4 | -4 |
Směrované zaokrouhlení
Fields:
Operace směrového zaokrouhlení přebírá původní číslo s implicitní nebo zadanou přesností a vrátí další nejbližší číslo v určitém směru se stejnou přesností jako původní číslo. Režimy směrování na MidpointRounding určují, kterým směrem se provádí zaokrouhlování na předdefinované číslo.
Následující tabulka ukazuje výsledky zaokrouhlení některých záporných a kladných čísel ve spojení s režimy směrového zaokrouhlení. Přesnost použitá k zaokrouhlení čísel je nula, což znamená, že číslo před desetinnou čárkou je ovlivněno operací zaokrouhlení.
| Původní číslo | ToNegativeInfinity | ToPositiveInfinity | ToZero |
|---|---|---|---|
| 3.5 | 3 | 4 | 3 |
| 2.8 | 2 | 3 | 2 |
| 2.5 | 2 | 3 | 2 |
| 2.1 | 2 | 3 | 2 |
| -2.1 | -3 | -2 | -2 |
| -2.5 | -3 | -2 | -2 |
| -2.8 | -3 | -2 | -2 |
| -3.5 | -4 | -3 | -3 |