MidpointRounding Énumération

Définition

Spécifie la stratégie que les méthodes d’arrondi mathématiques doivent utiliser pour arrondir un nombre.

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
Héritage
MidpointRounding
Attributs

Champs

Nom Valeur Description
ToEven 0

La stratégie d’arrondi au nombre le plus proche, et lorsqu’un nombre est à mi-chemin entre deux autres, il est arrondi vers le nombre pair le plus proche.

AwayFromZero 1

Stratégie d’arrondi au nombre le plus proche, et lorsqu’un nombre est à mi-chemin entre deux autres, il est arrondi vers le nombre le plus proche qui est éloigné de zéro.

ToZero 2

La stratégie d’arrondi dirigé vers zéro, avec le résultat le plus proche et pas plus important en grandeur que le résultat infiniment précis.

ToNegativeInfinity 3

La stratégie d’arrondi orienté vers le bas, avec le résultat le plus proche et non supérieur au résultat infiniment précis.

ToPositiveInfinity 4

La stratégie d’arrondi vers le haut, avec le résultat le plus proche et pas moins que le résultat infiniment précis.

Exemples

L’exemple suivant illustre la Math.Round méthode conjointement avec l’énumération 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)
'

Remarques

Utilisez l’énumération MidpointRounding avec les surcharges appropriées de Math.Round, MathF.Roundet Decimal.Round pour fournir un contrôle plus complet du processus d’arrondi.

Il existe deux stratégies générales d’arrondi : arrondi au plus proche et arrondi dirigé, et chaque champ d’énumération participe exactement à l’une de ces stratégies.

Arrondir à la valeur la plus proche

Champs:

Une opération d'arrondi au plus proche prend un nombre original avec une précision implicite ou spécifiée; examine le chiffre suivant, qui correspond à cette précision plus un; et renvoie le nombre le plus proche avec la même précision que le nombre original. Pour les nombres positifs, si le chiffre suivant est compris entre 0 et 4, le nombre le plus proche est vers l’infini négatif. Si le chiffre suivant est compris entre 6 et 9, le nombre le plus proche est vers l’infini positif. Pour les nombres négatifs, si le chiffre suivant est compris entre 0 et 4, le nombre le plus proche est vers l’infini positif. Si le chiffre suivant est compris entre 6 et 9, le nombre le plus proche est vers l’infini négatif.

Si le chiffre suivant est de 0 à 4 ou de 6 à 9, les MidpointRounding.AwayFromZero et MidpointRounding.ToEven n'affectent pas le résultat de l’opération d’arrondi. Toutefois, si le chiffre suivant est égal à 5, qui est le point intermédiaire entre deux résultats possibles et que tous les chiffres restants sont nuls ou qu’il n’y a pas de chiffres restants, le nombre le plus proche est ambigu. Dans ce cas, les modes d’arrondi au plus proche dans MidpointRounding permettent de spécifier si l’opération d’arrondi retourne le nombre le plus proche de zéro ou le nombre pair le plus proche.

Le tableau suivant illustre les résultats de l’arrondi de certains nombres négatifs et positifs en conjonction avec les modes d’arrondi au plus proche. La précision utilisée pour arrondir les nombres est zéro, ce qui signifie que le nombre après la virgule décimale affecte l’opération d’arrondi. Par exemple, pour le nombre -2,5, le chiffre après la virgule décimale est 5. Étant donné que ce chiffre est le point intermédiaire, vous pouvez utiliser une MidpointRounding valeur pour déterminer le résultat de l’arrondi. Si AwayFromZero elle est spécifiée, -3 est retournée, car il s’agit du nombre le plus proche de zéro avec une précision de zéro. Si ToEven elle est spécifiée, -2 est retournée, car il s’agit du nombre pair le plus proche avec une précision de zéro.

Numéro d’origine 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

Arrondi dirigé

Champs:

Une opération d’arrondi dirigé prend un nombre d’origine avec une précision implicite ou spécifiée et retourne le nombre le plus proche suivant dans une direction spécifique avec la même précision que le nombre d’origine. Les modes dirigés sur MidpointRounding déterminent vers quel nombre prédéfini l’arrondi est effectué.

Le tableau suivant illustre les résultats de l’arrondi de certains nombres négatifs et positifs en conjonction avec les modes d’arrondi dirigé. La précision utilisée pour arrondir les nombres est zéro, ce qui signifie que le nombre avant la virgule décimale est affecté par l’opération d’arrondi.

Numéro d’origine 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

S’applique à