2010-01-27 3 views
0

Я работаю с C# и SQL 2005. Я хранил поплавка переменного значения 0,2 в таблице колонку реального типа. Когда я открыл таблицу, чтобы проверить значения, я нашел значение 0.200000029 ... Известная проблема, реальный - приблизительный. Однако я изменил значение с помощью студии управления до 0,2 и перезагрузил таблицу. В базе данных теперь отображается значение 0.2.C# для SQL поплавка значения преобразования

Проблема лежит где-то между C# и SQL. Можно ли хранить значения из C#, как из студии управления SQL? Полагаю, что это так, но не знаю, как это сделать.

Может ли кто-нибудь помочь? Большое спасибо.

Tomas

ответ

4

Если вы храните .2 и хотите получить обратно ТОЛЬКО .2, используйте тип decimal данных. Значения float в SQL Server - это реальные значения IEEE float, что означает, что вы можете завершить с помощью значений NaN в полях. Выполнение НИЧЕГО с этими значениями приведет к сбою вашего заявления. Если вы не знаете, что вам действительно нужно значение float, вам намного лучше использовать decimal.

Чтобы ответить на ваш вопрос, .200000 .... 029, вы видите, это просто характер значений с плавающей запятой.

+0

Хороший совет! Кроме того, никогда не используйте float для денежных значений! –

0

Как указано, то, что вы видите, является побочным эффектом сохранения чисел с плавающей запятой в двоичном формате.

Для 0.2f, точное представление 0,20000000298023223876953125

Смотри статью Джон Скит для получения более подробной информации и кода для того, как было получено, что:

http://www.yoda.arachsys.com/csharp/floatingpoint.html