MidpointRounding Výčet

Definice

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
MidpointRounding
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

Platí pro