Ler em inglês

Partilhar via


Decimal.Round Método

Definição

Arredonda um valor para o inteiro ou número especificado de casas decimais mais próximo.

Sobrecargas

Round(Decimal, Int32, MidpointRounding)

Arredonda um valor decimal para a precisão especificada usando a estratégia de arredondamento especificada.

Round(Decimal, MidpointRounding)

Arredonda um valor decimal para um inteiro usando a estratégia de arredondamento especificada.

Round(Decimal)

Arredonda um valor decimal para o inteiro mais próximo.

Round(Decimal, Int32)

Arredonda um valor Decimal para um número especificado de casas decimais.

Round(Decimal, Int32, MidpointRounding)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Arredonda um valor decimal para a precisão especificada usando a estratégia de arredondamento especificada.

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

Parâmetros

d
Decimal

Um número decimal a ser arredondado.

decimals
Int32

O número de casas decimais significativas (precisão) no valor retornado.

mode
MidpointRounding

Um dos valores de enumeração que especifica qual estratégia de arredondamento usar.

Retornos

O número arredondado d para usar a mode estratégia de arredondamento e com uma precisão de decimals. Se a precisão de d for menor que decimals, d será retornado inalterado.

Implementações

Exceções

decimals é menor que 0 ou maior que 28.

mode não é um valor MidpointRounding.

O resultado está fora do intervalo de um objeto Decimal.

Exemplos

O exemplo a seguir demonstra como usar o Round(Decimal, Int32, MidpointRounding) método com a MidpointRounding enumeração .

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

Comentários

O decimals parâmetro especifica o número de casas decimais significativas no valor retornado e varia de 0 a 28. Se decimals for zero, um inteiro será retornado.

Se você especificar ToEven ou AwayFromZero para o mode parâmetro , essas estratégias de arredondamento só serão aplicadas para valores de ponto médio, ou seja, valores cujo dígito menos significativo é 5.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Arredonda um valor decimal para um inteiro usando a estratégia de arredondamento especificada.

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

Parâmetros

d
Decimal

Um número decimal a ser arredondado.

mode
MidpointRounding

Um dos valores de enumeração que especifica qual estratégia de arredondamento usar.

Retornos

O inteiro arredondado d para usar a mode estratégia de arredondamento.

Implementações

Exceções

mode não é um valor MidpointRounding.

O resultado está fora do intervalo de um objeto Decimal.

Exemplos

O exemplo a seguir exibe valores retornados pelo Round(Decimal, MidpointRounding) método com 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

Comentários

Se você especificar ToEven ou AwayFromZero para o mode parâmetro , essas estratégias de arredondamento só serão aplicadas para valores de ponto médio, ou seja, valores cujo dígito menos significativo é 5.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Arredonda um valor decimal para o inteiro mais próximo.

C#
public static decimal Round (decimal d);

Parâmetros

d
Decimal

Um número decimal a ser arredondado.

Retornos

O inteiro mais próximo ao parâmetro d. Se d estiver entre dois inteiros, sendo um deles par e outro ímpar, o número par será retornado.

Implementações

Exceções

O resultado está fora do intervalo de um valor Decimal.

Exemplos

O exemplo a seguir arredonda um intervalo de Decimal valores entre 100 e 102 para o inteiro mais próximo. Como o método usa o arredondamento do banqueiro, 100,5 arredonda para 100 e 101,5 arredonda para 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

Comentários

O comportamento deste método segue o padrão IEEE 754, seção 4. Esse tipo de arredondamento às vezes é chamado de meia rodada para oarredondamento par ou banqueiro. Ele minimiza erros de arredondamento resultantes do arredondamento consistente de um valor de ponto médio em uma única direção. É equivalente a chamar o Round(Decimal, MidpointRounding) método com um mode argumento de MidpointRounding.ToEven.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
Decimal.cs
Origem:
Decimal.cs
Origem:
Decimal.cs

Arredonda um valor Decimal para um número especificado de casas decimais.

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

Parâmetros

d
Decimal

Um número decimal a ser arredondado.

decimals
Int32

Um valor de 0 a 28 que especifica o número de casas decimais para o qual arredondar.

Retornos

O número decimal equivalente a d arredondado para decimals casas decimais.

Implementações

Exceções

decimals não é um valor de 0 a 28.

Exemplos

O exemplo a seguir arredonda vários Decimal valores para um número especificado de casas decimais usando o 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

Comentários

Esse método é equivalente a chamar o Round(Decimal, Int32, MidpointRounding) método com um mode argumento de MidpointRounding.ToEven. Quando d está exatamente na metade entre dois valores arredondados, o resultado é o valor arredondado que tem um dígito par na posição decimal de extrema direita. Por exemplo, quando arredondado para duas casas decimais, o valor 2.345 torna-se 2.34 e 2.355 torna-se o valor 2.36. Esse processo é conhecido como arredondamento até mesmo, ou arredondamento do banqueiro. Ele minimiza erros de arredondamento resultantes do arredondamento consistente de um valor de ponto médio em uma única direção.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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