日期:2014-05-18  浏览次数:21348 次

C#中float与数据库中float
用的是C#2003 和SqlServer 2000
在数据库中定义一个表
create table SBLX
(
MC VARCHAR(30),
FLOAT FKJ
)
为这个表增加一个数据
INSERT INTO SBLX(MC)
VALUES('china')

新建一个存储过程
CREATE PROCEDURE SBLX_update
@MC VARCHAR(30),
@FKJ FLOAT
AS
UPDATE SBLX
SET FKJ = @FKJ
WHERE MC = @MC

在C#中运用这个存储过程
SqlConnection conn = new SqlConnection (@"server = (local); user=sa;password=000000;" + "Database = jsjxywz");
conn.Open();
SqlCommand com = new SqlCommand("SBLX_update",conn);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add("@MC",SqlDbType.VarChar);
com.Parameters.Add("@KJ",SqlDbType.Float);
string mc = "china";
float kj = 3.4f;
com.Parameters["@MC"].Value = mc;
com.Parameters["@KJ"].Value = kj;
SqlDataReader dr = com.ExecuteReader();
dr.Close();
conn.Close();


运行后的结果怎么是在数据库中SBLX表中MC为china的那行的FKJ的数据是3.40000009536743
我想让它显示为3.4
我该怎么在存储过程中使用了??

------解决方案--------------------
两边的数据精度不一样。

数据库中的 float 翻译到 C# 后,应该是 double 类型
------解决方案--------------------
如果仅仅是显示

使用

float i = 2.344234234554345;
i.ToString("#0.0");