2011-10-06 55 views
6

什麼是SQL(MS SQL Server)的Decimal相當於.NETSQL十進制等效於.NET

它應該是DoubleDecimalFloatSingle在VB.NET中)?

+0

'Decimal'既然'Double'可能會失去精度... – Yahia

+0

@Yahia根據用法,Decimal可能會失去精度。主要區別在於Decimal是基數10,Double是二進制。授予的十進制通常用於貨幣工作,因此精度很少成爲問題。 –

+0

@DavidHeffernan - 實際上,如果源代碼是DECIMAL,轉換爲FLOAT就是您失去精確度的風險。 – MatBailie

回答

15

有在.NET中沒有確切同等類型,如SQL的十進制類型是固定點,而.NET的System.Decimal類型爲浮動(十進制)點類型。

但是,System.Decimal絕對是最接近的匹配項,通常應該是用於表示存儲在SQL數據庫的十進制列中的值。

+0

然而,由於(超出)精度,十進制不是「普通」類型的四個浮點值。我個人更經常使用Double ...但是爲了映射相應的值...我想我會用Decimals ... – serhio

+2

@serhio:其實我認爲大多數商業應用程序應該比'double '。精度並不重要 - 它是數據的性質和類型的* base *。如果你存儲人造數量,小數可能是正確的方法。對於諸如高度和寬度的「自然」值,「double」更合適。 –

+0

@Jonskeet,你確定嗎?本文與您不同:http://gregs-blog.com/2007/12/10/dot-net-decimal-type-vs-float-type/ – Johan