MidpointRounding Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica la estrategia que los métodos de redondeo matemáticos deben usar para redondear un número.
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
- Herencia
- Atributos
Campos
| Nombre | Valor | Description |
|---|---|---|
| ToEven | 0 | La estrategia de redondear al número más cercano, y cuando un número está a mitad de camino entre dos otros, se redondea hacia el número par más cercano. |
| AwayFromZero | 1 | La estrategia de redondear al número más cercano y, cuando un número está a mitad de camino entre dos otros, se redondea hacia el número más cercano que está lejos de cero. |
| ToZero | 2 | La estrategia de redondeo dirigida hacia cero, con el resultado más cercano a y no mayor en magnitud que el resultado infinitomente preciso. |
| ToNegativeInfinity | 3 | Estrategia de redondeo dirigido hacia abajo, con el resultado más cercano a y no mayor que el resultado infinitomente preciso. |
| ToPositiveInfinity | 4 | La estrategia de redondeo dirigido hacia arriba, con el resultado más cercano a y no menor que el resultado infinitomente preciso. |
Ejemplos
En el ejemplo siguiente se muestra el Math.Round método junto con la MidpointRounding enumeración :
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)
'
Comentarios
Use la enumeración MidpointRounding con las sobrecargas adecuadas de Math.Round, MathF.Round y Decimal.Round para proporcionar más control del proceso de redondeo.
Hay dos estrategias generales de redondeo—redondeo al más cercano y redondeo dirigido—y cada campo de enumeración participa exactamente en una de estas estrategias.
Redondeo al más cercano
Campos:
Una operación de redondeo al más cercano toma un número original con una precisión implícita o especificada; examina el siguiente dígito, que está en esa precisión más uno; y devuelve el número más cercano con la misma precisión que el número original. En el caso de los números positivos, si el siguiente dígito es de 0 a 4, el número más cercano es hacia el infinito negativo. Si el siguiente dígito es de 6 a 9, el número más cercano es hacia infinito positivo. En el caso de números negativos, si el siguiente dígito es de 0 a 4, el número más cercano se dirige al infinito positivo. Si el siguiente dígito es de 6 a 9, el número más cercano es hacia infinito negativo.
Si el siguiente dígito va de 0 a 4 o 6 a 9, y MidpointRounding.AwayFromZeroMidpointRounding.ToEven no afecta al resultado de la operación de redondeo. Sin embargo, si el siguiente dígito es 5, que es el punto medio entre dos resultados posibles, y todos los dígitos restantes son cero o no hay dígitos restantes, el número más cercano es ambiguo. En este caso, los modos de redondeo al más cercano en MidpointRounding te permiten especificar si la operación de redondeo devuelve el número más cercano alejado de cero o el número par más cercano.
En la tabla siguiente se muestran los resultados de redondear algunos números negativos y positivos en conjunto con los modos de redondeo al más cercano. La precisión utilizada para redondear los números es cero, lo que significa que el número después del separador decimal afecta a la operación de redondeo. Por ejemplo, para el número -2.5, el dígito después del separador decimal es 5. Dado que ese dígito es el punto medio, puede usar un MidpointRounding valor para determinar el resultado del redondeo. Si AwayFromZero se especifica , se devuelve -3 porque es el número más cercano lejos de cero con una precisión de cero. Si ToEven se especifica, se devuelve -2 porque es el número par más cercano con una precisión de cero.
| Número original | 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 |
Redondeo dirigido
Campos:
Una operación de redondeo dirigida toma un número original con una precisión implícita o especificada y devuelve el siguiente número más cercano en una dirección específica con la misma precisión que el número original. Modos dirigidos en MidpointRounding hacia el número predefinido para el que se realiza el redondeo.
En la tabla siguiente se muestran los resultados de redondear algunos números negativos y positivos junto con los modos de redondeo dirigido. La precisión utilizada para redondear los números es cero, lo que significa que el número antes del separador decimal se ve afectado por la operación de redondeo.
| Número original | 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 |