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 ?

Pourquoi la conversion d'un flotteur SQL en flotteur C# génère-t-elle une exception InvalidCastException ?

DDD
DDDoriginal
2024-12-23 18:15:171016parcourir

Why Does Casting a SQL Float to a C# Float Throw an 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn