HOWTO · Csharp

Convertir Float en Int en C#

Il existe 4 méthodes principales qui peuvent être utilisées pour convertir un float en int en C#, la méthode de transtypage explicite, la fonction Math.Ceiling(), la fonction Math.Floor() et la fonction Math.Round().

Sur cette page

Pour convertir un float en int en C#, choisissez l’opération selon la manière dont vous souhaitez traiter la partie fractionnaire : un cast direct tronque vers zéro, Math.Ceiling() arrondit vers plus l’infini, Math.Floor() arrondit vers moins l’infini et Math.Round() choisit l’entier le plus proche. Chaque conversion produit un int ; une valeur fractionnaire peut donc changer.

Convertir un float en int avec un cast explicite en C#

Un cast direct est l’option la plus simple si vous souhaitez supprimer la partie fractionnaire. Il tronque vers zéro : les valeurs positives comme négatives se rapprochent de zéro, et non de moins l’infini. Le programme complet suivant convertit les deux signes :

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);
    }
}

Le cast supprime la partie fractionnaire tout en se rapprochant de zéro : par exemple, 10.9f devient 10 et -10.9f devient -10. Les variables de résultat sont de type int. Cet exemple est fourni sous forme de code et n’a pas été exécuté pendant cette étape de rédaction.

Convertir un float en int avec Math.Ceiling() en C#

Utilisez Math.Ceiling() lorsque la valeur doit être arrondie vers plus l’infini. La méthode renvoie un double ; après l’appel, convertissez donc ce résultat en int avec un cast. Pour une valeur négative, l’arrondi vers plus l’infini la rapproche de zéro :

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);
    }
}

Ici, Math.Ceiling() arrondit chaque valeur vers le haut sur la droite numérique avant le cast, qui stocke ensuite le nombre entier obtenu dans un int. Par exemple, la valeur positive devient 11, tandis que la valeur négative devient -10. Cet exemple n’a pas été exécuté pendant cette étape de rédaction.

Convertir un float en int avec Math.Floor() en C#

Utilisez Math.Floor() lorsque la valeur doit être arrondie vers moins l’infini. Comme Math.Ceiling(), cette méthode renvoie un double ; convertissez son résultat en int avec un cast pour stocker un entier :

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’arrondi vers moins l’infini donne 10 pour la valeur positive et -11 pour la valeur négative. Pour les fractions négatives, cela diffère d’un cast direct, car celui-ci se rapproche de zéro. Les deux variables de résultat sont de type int. Cet exemple n’a pas été exécuté pendant cette étape de rédaction.

Convertir un float en int avec Math.Round() en C#

Utilisez Math.Round() si vous souhaitez obtenir l’entier le plus proche. La méthode renvoie un double, qui peut être converti en int avec un cast. Ces valeurs ne sont pas à mi-chemin entre deux entiers ; l’exemple ne dépend donc pas d’une règle d’arrondi des valeurs médianes :

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);
    }
}

Les entiers les plus proches sont respectivement 11 et -11. Les valeurs fractionnaires changent bien lors de la conversion ; Math.Round() convient lorsque la tâche exige un arrondi à la valeur la plus proche, mais ce n’est pas une méthode universellement préférable. Les résultats sont des valeurs de type int. Cet exemple n’a pas été exécuté pendant cette étape de rédaction.