Сохранять значения float в SQL Server

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

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

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

благодаря

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

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

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

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

Я думаю, что это VS Проблема не Sql-сервера, здесь я передаю сумму в строке («12.89») в хранимую процедуру и нахожу данные, сохраняя точную 12.89

Решение-

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

Заметка

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

Пример-

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

 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; } 

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

Столбец «Столбец» – тип Float в таблице не изменяется на sting


 Create Proc sp_Add ( @amount varchar(20) ) as begin Insert into Price(amount) values (@amount) end