HOWTO · Csharp
Converti Float in Int in C#
Esistono 4 metodi principali che possono essere utilizzati per convertire un float in int in C#, il metodo di typecasting esplicito, la funzione Math.Ceiling(), la funzione Math.Floor() e la funzione Math.Round().
In questa pagina
Per convertire un float in un int in C#, scegli l’operazione in base a come vuoi gestire la parte frazionaria: il cast diretto tronca verso zero, Math.Ceiling() arrotonda verso l’infinito positivo, Math.Floor() verso l’infinito negativo e Math.Round() seleziona l’intero più vicino. Ogni conversione produce un int, quindi un valore frazionario può cambiare.
Convertire un float in int con il cast esplicito in C#
Il cast diretto è l’opzione più semplice quando vuoi eliminare la parte frazionaria. Tronca verso zero, perciò i valori positivi e negativi si avvicinano a zero anziché all’infinito negativo. Il programma completo seguente converte entrambi i segni:
using System;
class Program
{
static void Main()
{
float positive = 10.9f;
float negative = -10.9f;
int positiveResult = (int)positive;
int negativeResult = (int)negative;
Console.WriteLine(positiveResult);
Console.WriteLine(negativeResult);
}
}
Il cast elimina la frazione mantenendo la direzione verso zero: per esempio, 10.9f diventa 10 e -10.9f diventa -10. Le variabili risultato sono di tipo int. Questo esempio è fornito come codice e non è stato eseguito durante questa fase di stesura.
Convertire un float in int con la funzione Math.Ceiling() in C#
Usa Math.Ceiling() quando vuoi arrotondare verso l’infinito positivo. Il metodo restituisce un double, quindi dopo averlo chiamato converti il risultato in int con un cast. Per un valore negativo, l’arrotondamento verso l’infinito positivo lo avvicina a zero:
using System;
class Program
{
static void Main()
{
float positive = 10.2f;
float negative = -10.2f;
int positiveResult = (int)Math.Ceiling(positive);
int negativeResult = (int)Math.Ceiling(negative);
Console.WriteLine(positiveResult);
Console.WriteLine(negativeResult);
}
}
In questo caso, Math.Ceiling() arrotonda ciascun valore verso l’alto sulla retta numerica prima del cast, che memorizza il numero intero risultante come int. Per esempio, il valore positivo diventa 11 e quello negativo diventa -10. Questo esempio non è stato eseguito durante questa fase di stesura.
Convertire un float in int con la funzione Math.Floor() in C#
Usa Math.Floor() quando vuoi arrotondare verso l’infinito negativo. Come Math.Ceiling(), restituisce un double; converti il risultato in int con un cast per memorizzare un intero:
using System;
class Program
{
static void Main()
{
float positive = 10.2f;
float negative = -10.2f;
int positiveResult = (int)Math.Floor(positive);
int negativeResult = (int)Math.Floor(negative);
Console.WriteLine(positiveResult);
Console.WriteLine(negativeResult);
}
}
L’arrotondamento verso l’infinito negativo produce 10 per il valore positivo e -11 per quello negativo. Per le frazioni negative il risultato differisce da quello di un cast diretto, perché il cast procede verso zero. Entrambe le variabili risultato sono di tipo int. Questo esempio non è stato eseguito durante questa fase di stesura.
Convertire un float in int con la funzione Math.Round() in C#
Usa Math.Round() quando vuoi ottenere l’intero più vicino. Il metodo restituisce un double, che puoi convertire in int con un cast. Questi valori non sono a metà tra due interi, quindi l’esempio non dipende da una regola di arrotondamento dei valori a metà:
using System;
class Program
{
static void Main()
{
float positive = 10.8f;
float negative = -10.8f;
int positiveResult = (int)Math.Round(positive);
int negativeResult = (int)Math.Round(negative);
Console.WriteLine(positiveResult);
Console.WriteLine(negativeResult);
}
}
Gli interi più vicini sono rispettivamente 11 e -11. I valori frazionari cambiano durante la conversione; Math.Round() è utile quando il comportamento richiesto è l’arrotondamento all’intero più vicino, ma non è una scelta universalmente migliore. I risultati sono valori int. Questo esempio non è stato eseguito durante questa fase di stesura.