Arrotondare un valore doppio a un valore intero in C#

Muhammad Maisam Abbas 12 ottobre 2023
  1. Arrotondare un valore doppio a un valore intero con la funzione Math.Ceiling() in C#
  2. Arrotondare un valore doppio a un valore intero con la funzione Math.Floor() in C#
  3. Arrotondare un valore doppio a un valore intero con la funzione Math.Round() in C#
Arrotondare un valore doppio a un valore intero in C#

Questo tutorial discuterà i metodi per arrotondare un valore double a un valore intero in C#.

Arrotondare un valore doppio a un valore intero con la funzione Math.Ceiling() in C#

Se vogliamo arrotondare per eccesso il valore doppio 2.5 al valore intero 3, dobbiamo usare la funzione Math.Ceiling(). La funzione Math.Ceiling() arrotonda un valore decimale al valore intero successivo. Il seguente esempio di codice ci mostra come possiamo arrotondare un valore double a un valore intero con la funzione Math.Ceiling() in 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);
    }
  }
}

Produzione:

Original Value = 2.5 Rounded Value = 3

Abbiamo arrotondato il valore doppio 2.5 al valore intero 3 con la funzione Math.Ceiling() in C#. Il problema con questo approccio è che la funzione Math.Ceiling() converte il valore decimale 2.3 nel valore intero 3.

Arrotondare un valore doppio a un valore intero con la funzione Math.Floor() in C#

Se vogliamo arrotondare per eccesso il valore doppio 2.5 al valore intero 2, dobbiamo usare la funzione Math.Floor(). La funzione Math.Floor() arrotonda un valore decimale al valore intero precedente. Il seguente esempio di codice ci mostra come possiamo arrotondare un valore double a un valore intero con la funzione Math.Floor() in 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);
    }
  }
}

Produzione:

Original Value = 2.5 Rounded Value = 2

Abbiamo arrotondato il doppio valore 2.5 al valore intero 2 con la funzione Math.Floor() in C#. Il problema con questo approccio è che la funzione Math.Floor() converte il valore decimale 2.9 nel valore intero 2.

Arrotondare un valore doppio a un valore intero con la funzione Math.Round() in C#

La funzione Math.Round() può essere utilizzata per arrotondare un valore double al valore intero più vicino in C#. La funzione Math.Round() restituisce un valore doppio arrotondato al numero intero più vicino. Il seguente esempio di codice ci mostra come possiamo arrotondare un valore double a un valore intero con la funzione Math.Round() in 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);
    }
  }
}

Produzione:

Original Value = 2.9 Rounded Value = 3

Abbiamo arrotondato il valore decimale 2.9 al valore intero 3 con la funzione Math.Round() in C#. Abbiamo utilizzato il typecasting per convertire il valore double restituito dalla funzione Math.Round() in un valore intero. C’è solo un problema con questo approccio. La funzione Math.Round() converte il valore decimale 2.5 nel valore intero 2.

Possiamo risolvere questo problema specificando MidpointRounding.AwayFromZero negli argomenti della funzione Math.Round(). Il seguente esempio di codice ci mostra come possiamo arrotondare 2.5 a 3 con la funzione Math.Round() in 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);
    }
  }
}

Produzione:

Original Value = 2.5 Rounded Value = 3

Abbiamo arrotondato il valore decimale 2.5 al valore intero 3 specificando il parametro MidpointRounding.AwayFromZero nella funzione Math.Round() in C#.

Tutti i metodi discussi sopra sono utili in diversi scenari specifici. Il modo peggiore possibile per arrotondare un valore double a un valore intero è il typecasting esplicito. Questo perché il typecasting esplicito ignora tutti i valori dopo il punto decimale e restituisce solo il valore intero prima del punto decimale.

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

Articolo correlato - Csharp Double