2012-04-18 58 views
1

我有一个查询,从C#代码到SQL Server 2008中执行:为什么服务器在插入时更改单个值?

INSERT INTO [tableName] (valueColumn) @Value 

哪里@ValueDbType.SingleValue = 45.01

的SQL参数的名称执行查询后,我在表中的值45,0099983215332看,而不是45,01

为什么会发生?

PS:列的类型float

+0

'float'是** **不是一个确切的数据类型 - 会有舍入误差....如果你需要更精确的数字,请改用'DECIMAL(p,s)'。 – 2012-04-18 07:58:49

+0

谢谢大家! 更改sql-parameter类型为SqlDBType.Float解决了这个问题。 – blazkovicz 2012-04-18 08:05:13

回答

2

valueColumn可能是一个浮点数。

浮点数据是近似值;因此,数据类型范围中的所有值都不能完全表示。

+0

当我在使用paramert的ins语句中直接写入值时,所有工作都很好。 – blazkovicz 2012-04-18 07:57:20

0

阅读this链接

浮动点可以从一个结构到另一个变化。

相关问题