我有一个查询,从C#代码到SQL Server 2008中执行:为什么服务器在插入时更改单个值?
INSERT INTO [tableName] (valueColumn) @Value
哪里@Value
是DbType.Single
和Value = 45.01
的SQL参数的名称执行查询后,我在表中的值45,0099983215332
看,而不是45,01
为什么会发生?
PS:列的类型float
我有一个查询,从C#代码到SQL Server 2008中执行:为什么服务器在插入时更改单个值?
INSERT INTO [tableName] (valueColumn) @Value
哪里@Value
是DbType.Single
和Value = 45.01
的SQL参数的名称执行查询后,我在表中的值45,0099983215332
看,而不是45,01
为什么会发生?
PS:列的类型float
valueColumn
可能是一个浮点数。
浮点数据是近似值;因此,数据类型范围中的所有值都不能完全表示。
当我在使用paramert的ins语句中直接写入值时,所有工作都很好。 – blazkovicz 2012-04-18 07:57:20
阅读this链接
浮动点可以从一个结构到另一个变化。
'float'是** **不是一个确切的数据类型 - 会有舍入误差....如果你需要更精确的数字,请改用'DECIMAL(p,s)'。 – 2012-04-18 07:58:49
谢谢大家! 更改sql-parameter类型为SqlDBType.Float解决了这个问题。 – blazkovicz 2012-04-18 08:05:13