Сохранить значения с плавающей точкой в ​​SQL Server - PullRequest
6 голосов
/ 17 июня 2009

У меня есть простое веб-приложение, и я хочу сохранить некоторые числа в формате Float или Double на сервере SQL.

но есть проблема, когда я пытаюсь сохранить 123.66, в таблице я вижу 123.6600003662109 сохранено.

Почему мой номер с плавающей запятой изменился при сохранении в БД? как я могу исправить эту ошибку?

Спасибо

Ответы [ 3 ]

11 голосов
/ 17 июня 2009

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

Если вы хотите точно сохранить десятичные числа, используйте тип decimal.

См. Мои статьи о типах с плавающей двоичной точкой и с плавающей запятой для получения дополнительной информации.

4 голосов
/ 17 июня 2009

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

0 голосов
/ 06 сентября 2016

Я думаю, что это проблема VS, а не Sql сервер, Здесь я передаю сумму в строке ("12,89") хранимой процедуре и нахожу данные с точностью до 12,89

решение-

Измените Float на строку в свойствах и методах, процедура

Примечание

не изменять тип столбца Float на строку в таблице

1011 * ПРИМЕР- *

В Вашей собственности

Public Float Amount { get; set; }

К

Public String Amount { get; set; }

В вашем методе

Public boolAdd(String amount)

{

//Your Logic Like

bool status = false;

DbParam[] param = new DbParam[1];

param[0] = new DbParam("@amount", "", "amount", SqlDbType.VarChar);

status = Db.Update(ds, "sp_Add", "", "", param, true);

return status;

  }

В вашей процедуре

Примечание. В столбце Amount указывается тип с плавающей запятой. Create Proc sp_Add ( @amount varchar(20) ) as begin Insert into Price(amount) values (@amount) end

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