Pourquoi un float SQL différents à partir d'un C# flotteur

Bonjour, j'ai un DataRow sorti d'une Table de données à partir d'un DataSet. Je suis de l'accès à une colonne définie dans SQL comme un flotteur de type de données. Je suis en train d'affecter cette valeur à une variable locale (c# flotteur de type de données), mais je reçois un InvalidCastExecption

DataRow exercise = _exerciseDataSet.Exercise.FindByExerciseID(65);
_AccelLimit = (float)exercise["DefaultAccelLimit"];  

Maintenant, en jouant avec ce que j'ai fait ce travail, mais il n'a pas de sens et il ne se sent pas bien.

_AccelLimit = (float)(double)exercise["DefaultAccelLimit"];

Quelqu'un peut-il expliquer ce que je suis en manque ici?