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
Libérer: 2024-12-23 18:15:17
original
1036 Les gens l'ont consulté

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
Copier après la connexion

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"];
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal