在SQL Server中保存浮点值

我有一个简单的Web应用程序,并希望在SQL服务器中保存一些Float或Double格式。

但是有一个问题,当我尝试保存123.66时,在表中我看到123.6600003662109存储了。

保存在DB上时,为什么我的浮点数改变了? 我该如何解决这个错误?

谢谢

实际上并没有试图保存123.66,因为你无法将123.66完全表示为float或double。 数据库比您习惯的更准确地保存数据,就是这样。

如果要准确保存十进制数,请使用decimal类型。

有关详细信息,请参阅我关于浮点二进制点和浮点小数点类型的文章。

这不是数据库问题,而是浮点数的一般问题

我认为这是VS问题而不是Sql server,这里我将字符串(“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; } 

在你的程序中

注意 – Amount列是表中的Float类型,不会更改为sting


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