我有一个简单的网络应用程序,并希望在SQL服务器中保存一些Float或Double格式。
但是有一个问题,当我尝试保存123.66时,在表中我看到存储了123.6600003662109。
保存在DB上时,为什么我的浮点数发生了变化?我该如何解决这个错误?
由于
答案 0 :(得分:11)
你实际试图保存123.66,因为你无法将123.66完全表示为float或double。数据库比以往更准确地保存数据,这就是全部。
如果您想准确保存十进制号码,请使用decimal
类型。
有关详细信息,请参阅有关floating binary point和floating decimal point类型的文章。
答案 1 :(得分:4)
这不是数据库问题,而是general problem with floating numbers
答案 2 :(得分:0)
我认为这是VS问题不是Sql server, 在这里我将字符串中的金额(" 12.89")传递给存储过程并查找数据保存准确12.89
在属性和方法,程序
中将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;
}
Create Proc sp_Add
(
@amount varchar(20)
)
as
begin
Insert into Price(amount) values (@amount)
end