2011-07-21 70 views

回答

44

沒有一個直接的等價物,因爲沒有內建的.NET類型,可以根據我的意識明確地指定精度/標度。沒有固定像NUMERIC點類型。

decimaldouble是在.NET公共浮點類型,與實施decimaldecimal floating point(如在T-SQL NUMERIC)和double實施binary floating point行爲(如在T-SQL FLOAT和REAL)。 (有float爲好,這是一個較小的二進制浮點型。)

你應該根據什麼樣的價值觀你要代表decimaldouble之間做出選擇 - 我通常認爲的「人禍」,人工值(特別是貨幣)適用於decimal,以及適用於double的連續自然值(如物理尺寸)。

+1

這些區別也適用於SQL服務器類型 - 'numeric' /'decimal'是十進制浮點類型,'float'和'real'是二進制浮點數,所以你應該匹配像喜歡。 –

+0

@Damien:謝謝,會編輯。 –

0

有取決於兩個問題兩種答案:

1)什麼的東西,可以讓你指定精度和範圍。沒有。這似乎是你的問題,但以防萬一:

2)什麼的東西,可以讓你指定一個十進制浮點數正是。這實際上是十進制類型 - 但是這個點是內部的,並且根據輸入數字被設置爲2^32個位置中的一個。不知道爲什麼,但只有28個值的工作,或2^5 - 4 ..

因此,即使.Net允許十進制看起來像一個浮動,它是非常不同的,並且與SQLServer的十進制匹配。任何不是2值的不同冪和的總和是使用正常二進制浮點的估計。這意味着甚至像0.1這樣的東西已經失去了精確性。但與十進制類型不同。

相關問題