Arredonde um valor duplo para um valor inteiro em C#

  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

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.

Artigo relacionado - Csharp Double

  • Converter duplo em int em C#