2015-09-07 83 views
0

我想將浮點數存入sql數據庫,但是當我嘗試存儲數據庫時,asp.net代碼會將原始數轉換爲其他數。 如)如果我給在文本框中1.1那麼它將存儲在數據庫1.1000000238418579如何將浮點數從asp.net存儲到sql數據庫?

當我拖動過程中創建下面的類。

[global::System.Data.Linq.Mapping.ParameterAttribute(Name="ServiceFee", DbType="Float")] System.Nullable<double> serviceFee, 

SQL列數據類型

serviceType float; 
+2

你有沒有考慮過使用小數? –

+0

不需要,因爲它會增加一些額外的精度。 –

+0

'float'有一個表示錯誤。它可以表示由兩個冪組成的數字,包括負數,所以1.25或1.125會正常工作。 1.1,但是,沒有一個確切的表示,所以你最終得到一些垃圾。 – dasblinkenlight

回答

2

1.1在單精度浮點最接近的表示爲:

0 01111111 00011001100110011001101 

即十進制是

1 * 2^(127-127) *(1 + (1/16 + 1/32 + 1/256 + 1/512 + 1/4096 + 1/8192 + 1/65536 + 1/131072 + 1/1048576 + 1/2097152 + 1/8388608))= 1.10000002384185791015625

如果你「真的」想存儲1.1,你必須使用十進制。

相關問題