Maison >base de données >tutoriel mysql >Pourquoi la conversion d'un flotteur SQL en flotteur C# génère-t-elle une exception InvalidCastException ?
Différence entre SQL Float et C# Float
Lors de la récupération d'une valeur d'une base de données SQL avec un type de données float et de la tentative de l'attribuer à un Variable C# de type float, vous pouvez rencontrer une InvalidCastException. En effet, le type de données SQL float correspond à un double en C#.
Exemple :
Considérez le code suivant :
DataRow exercise = _exerciseDataSet.Exercise.FindByExerciseID(65); _AccelLimit = (float)exercise["DefaultAccelLimit"]; // Throws InvalidCastException
Raison de l'exception :
La conversion explicite de l'objet en flottant dans le code ci-dessus ne peut pas être effectuée car le type de données sous-jacent est un double. Les flottants SQL sont stockés sous forme de valeurs à virgule flottante de 64 bits, qui sont différentes des valeurs à virgule flottante de 32 bits représentées par le type de données float C#.
Solution :
Pour résoudre ce problème, vous pouvez explicitement convertir la valeur récupérée en double avant de la convertir en float :
_AccelLimit = (float)(double)exercise["DefaultAccelLimit"];
Cette conversion garantit que la valeur récupérée est correctement convertie en double, puis convertie en float pour correspondre au type de données déclaré de la variable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!