在SQL Server中保存浮点值

时间:2009-06-17 08:14:18

标签: c# sql sql-server-2005 floating-point

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

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

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

由于

3 个答案:

答案 0 :(得分:11)

实际试图保存123.66,因为你无法将123.66完全表示为float或double。数据库比以往更准确地保存数据,这就是全部。

如果您想准确保存十进制号码,请使用decimal类型。

有关详细信息,请参阅有关floating binary pointfloating decimal point类型的文章。

答案 1 :(得分:4)

这不是数据库问题,而是general problem with floating numbers

答案 2 :(得分:0)

我认为这是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;

  }

在您的程序中

注意 - 金额列是表中的浮点类型,不要改为sting

Create Proc sp_Add
(

@amount varchar(20)

)
as

begin

Insert into Price(amount) values (@amount)

end