2012-04-18 56 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鏈接

浮動點可以從一個結構到另一個變化。

相關問題