我有一個查詢,從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