MidpointRounding Enum

Definitie

Hiermee geeft u de strategie op die wiskundige afrondingsmethoden moeten gebruiken om een getal af te ronden.

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

Velden

Name Waarde Description
ToEven 0

De strategie van afronding naar het dichtstbijzijnde getal. Wanneer een getal halverwege tussen twee andere is, wordt het afgerond op het dichtstbijzijnde even getal. Niet-middelpuntwaarden worden niet beïnvloed door deze keuze en worden afgerond op de dichtstbijzijnde vertegenwoordigbare waarde. Ook wel bekend als afronding van bankiers.

AwayFromZero 1

De strategie van afronding naar het dichtstbijzijnde getal. Wanneer een getal halverwege twee andere is, wordt het afgerond op het dichtstbijzijnde getal dat van nul is verwijderd. Niet-middelpuntwaarden worden niet beïnvloed door deze keuze en worden afgerond op de dichtstbijzijnde vertegenwoordigbare waarde.

ToZero 2

De strategie van gerichte afronding naar nul, waarbij elke waarde, niet alleen middelpunten, naar nul wordt afgerond. Het resultaat is de waarde die het dichtst bij en niet groter is dan het oneindig nauwkeurige resultaat. Bij afronding tot nul cijfers is dit gelijk aan afkapping; bij het afronden op een niet-nul aantal cijfers, wordt het afgekapt naar nul bij de opgegeven precisie.

ToNegativeInfinity 3

De strategie van neerwaarts gerichte afronding, waarbij elke waarde, niet alleen middelpunten, wordt afgerond op negatieve oneindigheid. Het resultaat is de waarde die het dichtst bij ligt en niet groter is dan het oneindig nauwkeurige resultaat. Bij afronding tot nul cijfers is dit gelijk aan de wiskundige vloerfunctie; bij afronding op een niet-nul aantal cijfers wordt hetzelfde gedrag toegepast op de opgegeven precisie.

ToPositiveInfinity 4

De strategie van opwaarts gerichte afronding, waarbij elke waarde, niet alleen middelpunten, naar positieve oneindigheid wordt afgerond. Het resultaat is de waarde die zich het dichtst bij bevindt en niet minder dan het oneindig nauwkeurige resultaat. Bij afronding tot nul cijfers komt dit overeen met de wiskundige plafondfunctie; bij afronding op een niet-nul aantal cijfers wordt hetzelfde gedrag toegepast op de opgegeven precisie.

Voorbeelden

In het volgende voorbeeld ziet u de Math.Round methode in combinatie met de MidpointRounding opsomming:

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)
'

Opmerkingen

Gebruik de MidpointRounding enumeratie met de juiste overloads van Math.Round, MathF.Round en Decimal.Round om meer controle te bieden over het afrondingsproces.

Ondanks de naam van de opsomming gaat niet elke modus alleen over hoe middelpunten worden verwerkt. MidpointRounding definieert twee algemene afrondingsstrategieën( afgerond op dichtstbijzijnde en gerichte afronding) en elk opsommingsveld neemt deel aan precies een van deze strategieën:

  • De round-to-dichtstbijzijnde modi (AwayFromZero en ToEven) worden altijd afgerond op de dichtstbijzijnde vertegenwoordigbare waarde. Ze verschillen alleen van elkaar wanneer de invoer precies halverwege twee waarden (een middelpunt) ligt, wat de naam van de opsomming verwijst.
  • De gerichte afrondingsmodi (, ToPositiveInfinityen ToZero) ronden altijd elke waarde (ToNegativeInfinity niet alleen middelpunten) af in een vaste richting. Het resultaat is de dichtstbijzijnde vertegenwoordigbare waarde in die richting, zelfs als de invoer geen middelpunt is.

Afronden naar de dichtstbijzijnde

Fields:

Een afronding tot de dichtstbijzijnde waarde bewerking neemt een oorspronkelijk getal met een impliciete of opgegeven precisie, onderzoekt het volgende cijfer dat zich op die precisie plus één bevindt, en retourneert het dichtstbijzijnde getal met dezelfde precisie als het oorspronkelijke getal. Als voor positieve getallen het volgende cijfer van 0 tot en met 4 ligt, ligt het dichtstbijzijnde getal bij negatieve oneindigheid. Als het volgende cijfer van 6 tot en met 9 ligt, ligt het dichtstbijzijnde getal op positieve oneindigheid. Als voor negatieve getallen het volgende cijfer van 0 tot en met 4 ligt, ligt het dichtstbijzijnde getal in de richting van positief oneindigheid. Als het volgende cijfer van 6 tot en met 9 ligt, ligt het dichtstbijzijnde getal in de richting van negatief oneindigheid.

Als het volgende cijfer van 0 tot en met 4 of 6 tot en met 9 ligt, is de keuze tussen AwayFromZero en ToEven niet van invloed op het resultaat van de afrondingsbewerking. Als het volgende cijfer echter 5 is, wat het middelpunt is tussen twee mogelijke resultaten en alle resterende cijfers nul zijn of er geen resterende cijfers zijn, is het dichtstbijzijnde getal dubbelzinnig. In dit geval kunt u met de afrondingswijzen naar de dichtstbijzijnde MidpointRounding opgeven of de afrondingsbewerking het dichtstbijzijnde getal van nul af of het dichtstbijzijnde even getal retourneert.

In de volgende tabel worden de resultaten getoond van het afronden van enkele negatieve en positieve getallen in combinatie met afrondingsmethoden naar het dichtstbijzijnde getal. De precisie die wordt gebruikt om de getallen af te ronden, is nul, wat betekent dat het getal na het decimaalteken van invloed is op de afrondingsbewerking. Voor het getal -2,5 is het cijfer na de decimale komma bijvoorbeeld 5. Omdat dat cijfer het middelpunt is, kunt u een MidpointRounding waarde gebruiken om het resultaat van afronding te bepalen. Als AwayFromZero dit is opgegeven, wordt -3 geretourneerd omdat het dichtstbijzijnde getal van nul is met een precisie van nul. Als ToEven dit is opgegeven, wordt -2 geretourneerd omdat het het dichtstbijzijnde even getal is met een precisie van nul.

Oorspronkelijk nummer 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

Gerichte afronding

Fields:

Een doelgerichte afrondingsbewerking neemt een oorspronkelijk getal met een impliciete of opgegeven precisie en geeft het eerstvolgende getal dat het dichtstbij ligt terug in een specifieke richting met dezelfde precisie als het oorspronkelijke getal. Gerichte modi om MidpointRounding de richting te bepalen waarop elke waarde wordt afgerond. In tegenstelling tot de round-to-dichtstbijzijnde modi zijn deze modi van toepassing op elke invoerwaarde, niet alleen op middelpunten; Hiermee wordt bijvoorbeeld ToPositiveInfinity 2.1, 2,5 en 2,8 afgerond op 3.

In de volgende tabel ziet u de resultaten van het afronden van enkele negatieve en positieve getallen in combinatie met gerichte afrondingsmodi. De precisie die wordt gebruikt om de getallen af te ronden, is nul, wat betekent dat het getal vóór het decimaalteken wordt beïnvloed door de afrondingsbewerking.

Oorspronkelijk nummer 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

Van toepassing op