Partager via


Comment : convertir une chaîne en nombre (Guide de programmation C#)

Vous pouvez convertir une chaîne en un nombre avec les méthodes de la classe Convert. Cette conversion peut être utile lors de l'obtention d'une entrée numérique à partir d'un argument de ligne de commande, par exemple. Le tableau suivant répertorie quelques unes des méthodes que vous pouvez utiliser.

Type numérique

Méthode

decimal

ToDecimal(String)

float

ToSingle(String)

double

ToDouble(String)

short

ToInt16(String)

int

ToInt32(String)

long

ToInt64(String)

ushort

ToUInt16(String)

uint

ToUInt32(String)

ulong

ToUInt64(String)

Exemple

Cet exemple appelle la méthode ToInt32(String) pour convertir une entrée de type chaîne en int. Le programme intercepte les deux exceptions les plus communes qui peuvent être levées par cette méthode, FormatException et OverflowException. Si le nombre peut être incrémenté sans entraîner de dépassement au niveau de l'emplacement de stockage des entiers, le programme ajoute 1 au résultat et imprime la sortie.

static void Main(string[] args)
{
    int numVal = -1;
    bool repeat = true;

    while (repeat == true)
    {
        Console.WriteLine("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive).");

        string input = Console.ReadLine();

        // ToInt32 can throw FormatException or OverflowException. 
        try
        {
            numVal = Convert.ToInt32(input);
        }
        catch (FormatException e)
        {
            Console.WriteLine("Input string is not a sequence of digits.");
        }
        catch (OverflowException e)
        {
            Console.WriteLine("The number cannot fit in an Int32.");
        }
        finally
        {
            if (numVal < Int32.MaxValue)
            {
                Console.WriteLine("The new value is {0}", numVal + 1);
            }
            else
            {
                Console.WriteLine("numVal cannot be incremented beyond its current value");
            }
        }
        Console.WriteLine("Go again? Y/N");
        string go = Console.ReadLine();
        if (go == "Y" || go == "y")
        {
            repeat = true;
        }
        else
        {
            repeat = false;
        }
    }
    // Keep the console open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();    
}
// Sample Output: 
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive). 
// 473 
// The new value is 474 
// Go again? Y/N 
// y 
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive). 
// 2147483647 
// numVal cannot be incremented beyond its current value 
// Go again? Y/N 
// Y 
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive). 
// -1000 
// The new value is -999 
// Go again? Y/N 
// n 
// Press any key to exit.

Il est également possible de convertir une string en int à l'aide des méthodes Parse ou TryParse du struct Int32. La méthode ToUInt32 utilise Parse en interne. Si le format de la chaîne n'est pas valide, Parse lève une exception tandis que TryParse retourne la valeur false sans lever d'exceptions. Les exemples suivants illustrent des appels à Parse et TryParse qui ont réussi ou échoué.

int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
// Output: -105
// TryParse returns true if the conversion succeeded 
// and stores the result in the specified variable. 
int j;
bool result = Int32.TryParse("-105", out j);
if (true == result)
    Console.WriteLine(j);
else
    Console.WriteLine("String could not be parsed.");
// Output: -105
try
{
    int m = Int32.Parse("abc");
}
catch (FormatException e)
{
    Console.WriteLine(e.Message);
}
// Output: Input string was not in a correct format.
string inputString = "abc";
int numValue;
bool parsed = Int32.TryParse(inputString, out numValue);

if (!parsed)
    Console.WriteLine("Int32.TryParse could not parse '{0}' to an int.\n", inputString);

// Output: Int32.TryParse could not parse 'abc' to an int.

Voir aussi

Tâches

Comment : déterminer si une chaîne représente une valeur numérique (Guide de programmation C#)

Référence

Types (Guide de programmation C#)

Autres ressources

Utilitaire de mise en forme .NET Framework 4