Convertir des valeurs
bool() : obtenir un booléen
bool() applique les règles de vérité du langage Python. Les valeurs nulles, les collections vides et None sont considérées comme fausses :
print(bool(0)) # False
print(bool(42)) # True
print(bool([])) # False
print(bool("False")) # True : la chaîne n'est pas vide
Equivalent en C#
int number = 42;
string text = "False";
Console.WriteLine(number != 0); // True
Console.WriteLine(!string.IsNullOrEmpty(text)); // True
Console.WriteLine(bool.Parse(text)); // False
En C#, ces règles de conversion en booléen ne s’appliquent pas automatiquement : nous devons implémenter explicitement les conditions à vérifier.
int() : obtenir un entier
int() convertit un texte ou une valeur numérique en entier. Pour un nombre flottant, la partie fractionnaire est supprimée.
print(int("42")) # 42
print(int(12.9)) # 12
print(int(-12.9)) # -12
print(int("1010", 2)) # 10 : lecture en base 2
Sans argument, int() retourne 0.
Equivalent en C#
Console.WriteLine(int.Parse("42", CultureInfo.InvariantCulture)); // 42
Console.WriteLine((int)12.9); // 12
Console.WriteLine((int)(-12.9)); // -12
Console.WriteLine(Convert.ToInt32("1010", 2)); // 10
Le type Python int a une précision arbitraire, limitée par les ressources disponibles. Le type int en C# est un entier signé sur 32 bits. Le cast d’un flottant tronque et Convert.ToInt32(double) arrondit.
float() : obtenir un flottant
float() permet d'obtenir un nombre à virgule flottante à partir d'un nombre ou d'une chaîne compatible :
Le séparateur décimal du texte est un point. Les flottants représentent de nombreuses fractions de manière approchée.
Equivalent en C#
double price = double.Parse("12.5", CultureInfo.InvariantCulture);
double count = 10;
Console.WriteLine(price.ToString(CultureInfo.InvariantCulture)); // 12.5
Le type float de Python correspond au type double de C#, qui utilise une représentation sur 64 bits. Le type float de C# utilise une représentation sur 32 bits. Par défaut, double.Parse() interprète la chaîne selon la culture courante. L’utilisation de la propriété CultureInfo.InvariantCulture permet de lire un nombre dont le séparateur décimal est un point.
complex() : obtenir un nombre complexe
complex() permet d'obtenir un nombre complexe composé d'une partie réelle et d'une partie imaginaire. Python utilise j pour l'unité imaginaire :
Equivalent en C#
Complex value = new Complex(3, 4);
Console.WriteLine(value.Real); // 3
Console.WriteLine(value.Imaginary); // 4
Console.WriteLine(value.Magnitude); // 5
str() : obtenir une chaîne
str() permet d'obtenir une représentation textuelle d'un objet :
Equivalent en C#
string number = 42.ToString(CultureInfo.InvariantCulture);
string flag = true.ToString();
byte[] data = Encoding.UTF8.GetBytes("Bonjour");
Console.WriteLine(Encoding.UTF8.GetString(data)); // Bonjour
La méthode ToString() ne garantit ni le même format ni le même contenu que str() ; le formatage numérique .NET peut dépendre de la culture.