Я предполагаю, что значение возвращается в штучной упаковке double
вместо float
. При распаковке тип должен быть точно правильный. Если предположить, что я прав, а это не decimal
или что-то в этом роде, вы можете использовать:
float monday = (float) (double) reader["Monday"];
и это будет работать. Это довольно уродливо, хотя. Если вы используете SqlDataReader.GetFloat
, это должно быть правильно , если это действительно значение с одинарной точностью, и оно более понятно (IMO), что происходит.
С другой стороны, ваши данные могут на самом деле возвращаться из базы данных как double
, и в этом случае вы должны (IMO) использовать:
float monday = (float) reader.GetDouble(column);
Кроме того, вы уверены, что float
на самом деле является наиболее подходящим типом здесь в первую очередь? Часто decimal
более уместен ...