2012-04-24 3 views
13

Я работаю над веб-приложением asp.net mvc 3, используя подход базы данных.Entity Framework сопоставляет тип данных float в double

У меня есть таблица под названием Results, которая содержит два столбца (min & max) типа float, но когда я использую Entity Framework для отображения существующей базы данных в модели классов, то EF создает класс Results с типом данных min & max поля как double вместо float, как указано в базе данных exsiting.

Так почему же такое поведение происходит? Это вызовет проблемы?

ответ

16

Это нормальное поведение, согласно MSDN.

Даже тип данных SQL-сервера real сопоставляется с double, хотя float определенно будет достаточно.

Но имена типов очень запутывают здесь. Фактически float (t-SQL) совпадает с double (.Net): точность 15 цифр и диапазон отрицательных 1.79769313486232e308 к положительному 1.79769313486232e308.

1

Я не уверен, если ваша проблема идентична или нет:

http://forums.asp.net/p/1606916/4100117.aspx

Но это не кажется, что это должно вызывать никаких проблем. Вы можете потерять точность, когда ваши номера будут перемещаться с двойного на поплавок, но он должен работать, если вам не нужны дополнительные цифры.

+0

но почему я буду потерять цифры, если я сменил double на fload, я попытался вставить что-то вроде 1.123456789, и он был правильно сохранен в базе данных ... –

+0

Вы могли бы потерять точность, поскольку поплавок имеет точность 7 , в то время как двойной имеет точность 15-16. Маловероятно, что вам понадобится такая точность, если вы не делаете какие-то математические вычисления там, где это было необходимо. http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.100).aspx http://msdn.microsoft.com/en-us/library/678hzkk9(v=vs .100) .aspx Эти 2 ссылки предназначены для поплавка и двойных типов данных. –