Arredonde um valor duplo para um valor inteiro em C#

Muhammad Maisam Abbas 12 outubro 2023
  1. Arredonde um valor duplo para um valor inteiro com a função Math.Ceiling() em C#
  2. Arredonde um valor duplo para um valor inteiro com a função Math.Floor() em C#
  3. Arredonde um valor duplo para um valor inteiro com a função Math.Round() em C#
Arredonde um valor duplo para um valor inteiro em C#

Este tutorial discutirá os métodos para arredondar um valor duplo para um valor inteiro em C#.

Arredonde um valor duplo para um valor inteiro com a função Math.Ceiling() em C#

Se quisermos arredondar o valor duplo 2.5 para o valor inteiro 3, temos que usar a função Math.Ceiling(). A função Math.Ceiling() arredonda um valor decimal para o próximo valor inteiro. O exemplo de código a seguir nos mostra como podemos arredondar um valor duplo para um valor inteiro com a função Math.Ceiling() em C#.

using System;

namespace round_double_to_intt {
  class Program {
    static void Main(string[] args) {
      double d = 2.5;
      int i = (int)Math.Ceiling(d);
      Console.WriteLine("Original Value = {0}", d);
      Console.WriteLine("Rounded Value = {0}", i);
    }
  }
}

Resultado:

Original Value = 2.5 Rounded Value = 3

Arredondamos o valor duplo 2.5 para o valor inteiro 3 com a função Math.Ceiling() em C#. O problema com esta abordagem é que a função Math.Ceiling() converte o valor decimal 2.3 para o valor inteiro 3.

Arredonde um valor duplo para um valor inteiro com a função Math.Floor() em C#

Se quisermos arredondar o valor duplo 2.5 para o valor inteiro 2, temos que usar a função Math.Floor(). A função Math.Floor() arredonda um valor decimal para o valor inteiro anterior. O exemplo de código a seguir nos mostra como podemos arredondar um valor duplo para um valor inteiro com a função Math.Floor() em C#.

using System;

namespace round_double_to_intt {
  class Program {
    static void Main(string[] args) {
      double d = 2.5;
      int i = (int)Math.Floor(d);
      Console.WriteLine("Original Value = {0}", d);
      Console.WriteLine("Rounded Value = {0}", i);
    }
  }
}

Resultado:

Original Value = 2.5 Rounded Value = 2

Arredondamos o valor duplo 2.5 para o valor inteiro 2 com a função Math.Floor() em C#. O problema com esta abordagem é que a função Math.Floor() converte o valor decimal 2.9 para o valor inteiro 2.

Arredonde um valor duplo para um valor inteiro com a função Math.Round() em C#

A função Math.Round() pode ser usada para arredondar um valor duplo para o valor inteiro mais próximo em C#. A função Math.Round() retorna um valor duplo que é arredondado para o inteiro mais próximo. O exemplo de código a seguir nos mostra como podemos arredondar um valor duplo para um valor inteiro com a função Math.Round() em C#.

using System;

namespace round_double_to_intt {
  class Program {
    static void Main(string[] args) {
      double d = 2.9;
      int i = (int)Math.Round(d);
      Console.WriteLine("Original Value = {0}", d);
      Console.WriteLine("Rounded Value = {0}", i);
    }
  }
}

Resultado:

Original Value = 2.9 Rounded Value = 3

Arredondamos o valor decimal 2.9 para o valor inteiro 3 com a função Math.Round() em C#. Usamos typecasting para converter o valor duplo retornado pela função Math.Round() em um valor inteiro. Existe apenas um problema com essa abordagem. A função Math.Round() converte o valor decimal 2.5 para o valor inteiro 2.

Podemos corrigir esse problema especificando MidpointRounding.AwayFromZero nos argumentos da função Math.Round(). O exemplo de código a seguir nos mostra como podemos arredondar 2.5 para 3 com a função Math.Round() em C#.

using System;

namespace round_double_to_intt {
  class Program {
    static void Main(string[] args) {
      double d = 2.5;
      int i = (int)Math.Round(d, MidpointRounding.AwayFromZero);
      Console.WriteLine("Original Value = {0}", d);
      Console.WriteLine("Rounded Value = {0}", i);
    }
  }
}

Resultado:

Original Value = 2.5 Rounded Value = 3

Arredondamos o valor decimal 2.5 para o valor inteiro 3 especificando o parâmetro MidpointRounding.AwayFromZero na função Math.Round() em C#.

Todos os métodos discutidos acima são úteis em diferentes cenários específicos. A pior maneira possível de arredondar um valor duplo para um valor inteiro é por conversão explícita de tipos. Isso ocorre porque o typecasting explícito ignora todos os valores após a vírgula decimal e retorna apenas o valor inteiro antes da vírgula decimal.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Csharp Double