Leer en inglés

Compartir a través de


Decimal.Round Método

Definición

Redondea un valor al entero más próximo o al número especificado de posiciones decimales.

Sobrecargas

Round(Decimal, Int32, MidpointRounding)

Redondea un valor decimal a la precisión especificada mediante la estrategia de redondeo especificada.

Round(Decimal, MidpointRounding)

Redondea un valor decimal a un entero utilizando la estrategia de redondeo especificada.

Round(Decimal)

Redondea un valor decimal al entero más próximo.

Round(Decimal, Int32)

Redondea un valor Decimal a un número especificado de posiciones decimales.

Round(Decimal, Int32, MidpointRounding)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Redondea un valor decimal a la precisión especificada mediante la estrategia de redondeo especificada.

C#
public static decimal Round (decimal d, int decimals, MidpointRounding mode);

Parámetros

d
Decimal

Número decimal que se va a redondear.

decimals
Int32

Número de posiciones decimales significativas (precisión) del valor devuelto.

mode
MidpointRounding

Uno de los valores de enumeración que especifica qué estrategia de redondeo se va a usar.

Devoluciones

Número redondeado d al uso de la mode estrategia de redondeo y con una precisión de decimals. Si la precisión de d es menor que decimals, se devuelve d sin modificar.

Implementaciones

Excepciones

decimals es menor que 0 o mayor que 28.

mode no es un valor MidpointRounding.

El resultado está fuera del intervalo de un objeto Decimal.

Ejemplos

En el ejemplo siguiente se muestra cómo usar el Round(Decimal, Int32, MidpointRounding) método con la MidpointRounding enumeración .

C#
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)
*/

Comentarios

El decimals parámetro especifica el número de posiciones decimales significativas en el valor devuelto y los intervalos de 0 a 28. Si decimals es cero, se devuelve un entero.

Si especifica ToEven o AwayFromZero para el mode parámetro , esas estrategias de redondeo solo se aplican a los valores de punto medio, es decir, los valores cuyo dígito menos significativo es 5.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Round(Decimal, MidpointRounding)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Redondea un valor decimal a un entero utilizando la estrategia de redondeo especificada.

C#
public static decimal Round (decimal d, MidpointRounding mode);

Parámetros

d
Decimal

Número decimal que se va a redondear.

mode
MidpointRounding

Uno de los valores de enumeración que especifica qué estrategia de redondeo se va a usar.

Devoluciones

Entero que d se redondea al uso de la mode estrategia de redondeo.

Implementaciones

Excepciones

mode no es un valor MidpointRounding.

El resultado está fuera del intervalo de un objeto Decimal.

Ejemplos

En el ejemplo siguiente se muestran los valores devueltos por el Round(Decimal, MidpointRounding) método con argumentos diferentes mode .

C#
Console.WriteLine($"{"Value",-10} {"Default",-10} {"ToEven",-10} {"AwayFromZero",-15} {"ToZero",-15}");
for (decimal value = 12.0m; value <= 13.0m; value += 0.1m)
    Console.WriteLine($"{value,-10} {Math.Round(value),-10} " +
        $"{Math.Round(value, MidpointRounding.ToEven),-10} " +
        $"{Math.Round(value, MidpointRounding.AwayFromZero),-15} " +
        $"{Math.Round(value, MidpointRounding.ToZero),-15}");

// The example displays the following output:
//       Value      Default    ToEven     AwayFromZero    ToZero
//       12.0       12         12         12              12
//       12.1       12         12         12              12
//       12.2       12         12         12              12
//       12.3       12         12         12              12
//       12.4       12         12         12              12
//       12.5       12         12         13              12
//       12.6       13         13         13              12
//       12.7       13         13         13              12
//       12.8       13         13         13              12
//       12.9       13         13         13              12
//       13.0       13         13         13              13

Comentarios

Si especifica ToEven o AwayFromZero para el mode parámetro , esas estrategias de redondeo solo se aplican a los valores de punto medio, es decir, los valores cuyo dígito menos significativo es 5.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Round(Decimal)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Redondea un valor decimal al entero más próximo.

C#
public static decimal Round (decimal d);

Parámetros

d
Decimal

Número decimal que se va a redondear.

Devoluciones

El entero más cercano al parámetro d. Si d se encuentra a la mitad del intervalo entre dos números enteros, uno par y el otro impar, se devuelve el número par.

Implementaciones

Excepciones

El resultado está fuera del intervalo de un valor Decimal.

Ejemplos

En el ejemplo siguiente se redondea un intervalo de Decimal valores entre 100 y 102 al entero más cercano. Dado que el método usa el redondeo bancario, 100,5 rondas a 100 y 101,5 rondas a 102.

C#
using System;

public class Example
{
   public static void Main()
   {
      for (decimal value = 100m; value <= 102m; value += .1m)
         Console.WriteLine("{0} --> {1}", value, Decimal.Round(value));
   }
}
// The example displays the following output:
//     100 --> 100
//     100.1 --> 100
//     100.2 --> 100
//     100.3 --> 100
//     100.4 --> 100
//     100.5 --> 100
//     100.6 --> 101
//     100.7 --> 101
//     100.8 --> 101
//     100.9 --> 101
//     101.0 --> 101
//     101.1 --> 101
//     101.2 --> 101
//     101.3 --> 101
//     101.4 --> 101
//     101.5 --> 102
//     101.6 --> 102
//     101.7 --> 102
//     101.8 --> 102
//     101.9 --> 102
//     102.0 --> 102

Comentarios

El comportamiento de este método sigue el estándar IEEE 754, sección 4. Este tipo de redondeo a veces se denomina redondeo a la mitad o alredondeo bancario. Minimiza los errores de redondeo que resultan de redondear constantemente un valor de punto medio en una sola dirección. Equivale a llamar al Round(Decimal, MidpointRounding) método con un mode argumento de MidpointRounding.ToEven.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Round(Decimal, Int32)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Redondea un valor Decimal a un número especificado de posiciones decimales.

C#
public static decimal Round (decimal d, int decimals);

Parámetros

d
Decimal

Número decimal que se va a redondear.

decimals
Int32

Valor comprendido entre el 0 y el 28 que especifica el número de posiciones decimales a las que se va a redondear.

Devoluciones

Número decimal equivalente a d redondeado a decimals posiciones decimales.

Implementaciones

Excepciones

decimals no es un valor comprendido entre 0 y 28.

Ejemplos

En el ejemplo siguiente se redondea varios Decimal valores a un número especificado de posiciones decimales mediante el Round método .

C#
using System;

class Example12
{
   public static void Main()
   {
      // Define a set of Decimal values.
      decimal[] values = { 1.45m, 1.55m, 123.456789m, 123.456789m,
                           123.456789m, -123.456m,
                           new Decimal(1230000000, 0, 0, true, 7 ),
                           new Decimal(1230000000, 0, 0, true, 7 ),
                           -9999999999.9999999999m,
                           -9999999999.9999999999m };
      // Define a set of integers to for decimals argument.
      int[] decimals = { 1, 1, 4, 6, 8, 0, 3, 11, 9, 10};

      Console.WriteLine("{0,26}{1,8}{2,26}",
                        "Argument", "Digits", "Result" );
      Console.WriteLine("{0,26}{1,8}{2,26}",
                        "--------", "------", "------" );
      for (int ctr = 0; ctr < values.Length; ctr++)
        Console.WriteLine("{0,26}{1,8}{2,26}",
                          values[ctr], decimals[ctr],
                          Decimal.Round(values[ctr], decimals[ctr]));
    }
}
// The example displays the following output:
//                   Argument  Digits                    Result
//                   --------  ------                    ------
//                       1.45       1                       1.4
//                       1.55       1                       1.6
//                 123.456789       4                  123.4568
//                 123.456789       6                123.456789
//                 123.456789       8                123.456789
//                   -123.456       0                      -123
//               -123.0000000       3                  -123.000
//               -123.0000000      11              -123.0000000
//     -9999999999.9999999999       9    -10000000000.000000000
//     -9999999999.9999999999      10    -9999999999.9999999999

Comentarios

Este método es equivalente a llamar al Round(Decimal, Int32, MidpointRounding) método con un mode argumento de MidpointRounding.ToEven. Cuando d está exactamente a la mitad entre dos valores redondeados, el resultado es el valor redondeado que tiene un dígito par en la posición decimal derecha. Por ejemplo, cuando se redondea a dos decimales, el valor 2,345 se convierte en 2,34 y el valor 2,355 pasa a ser 2,36. Este proceso se conoce como redondeo hacia elredondeo, o el redondeo bancario. Minimiza los errores de redondeo que resultan de redondear constantemente un valor de punto medio en una sola dirección.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1