Linq2Sql поплавок становится поврежденным - PullRequest
0 голосов
/ 14 марта 2012

В моей базе данных есть два поля, которые определены как числа с плавающей точкой

[Longitude] [float] NULL
[Latitude] [float] NULL

Я добавил их в свой файл linq2sql, и они отображаются как числа с плавающей точкой следующим образом enter image description here

Я могусм. в моей базе данных есть значение -3.6607431 для Longitude, однако, когда я профилирую sql (используя sql express и пользовательский инструмент профилировщика), я вижу, что фактическое значение, переданное в запросах, составляет 3.6607429981231689.

Кажется, что имеетпотерял отрицательный знак и добавил дополнительные значения.

Есть ли что-то, чего мне не хватает, делает ли float в SQL не отображаемым как float, как это в dbml, или есть другая проблема, происходящая

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Числа с плавающей запятой точны только до определенной степени и имеют «проблему», которую вы описываете как наличие «дополнительных значений».Вот как работает поплавок.

Вы должны использовать десятичную или, возможно, двойную.Дальнейшее чтение: В чем разница между десятичным, плавающим и двойным в C #?

1 голос
/ 14 марта 2012

Значение -3.6607431f в C # на самом деле точно -3.6607429981231689453125 - то есть это точно представляемое значение с плавающей точкой, которое ближе всего к -3.6607431.Поэтому я думаю, что это соответствует точности: это просто естественная часть двоичной плавающей запятой .По сути, вам не стоит об этом беспокоиться - если вам не нужно , нужно точных десятичных значений, в этом случае вам следует сопоставить decimal вместо float (и соответствующим образом обновить схему базы данных).

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

Из вашего описания не ясно, * вы выбираете результатов или передаете параметр в запросе (вы говоритео «значении, передаваемом в запросах», которое может означать в любом случае).Если бы вы могли показать соответствующий код и то, как вы диагностируете проблему, это помогло бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...