2013-04-21 58 views
3

MSDN具有大約如何構造包括指定精度和分的SQLDECIMAL數據類型,它只能在施工時被設置的一個新實例文檔的一個實例。如何構建SQLDECIMAL數據類型,用於指定精度和標度

這裏有一個工作的例子,但我不知道如何設置value屬性:

SqlDecimal Test2 = new SqlDecimal(10, 3, false, new int[4] { 2, 1, 0, 0 }); 

當我打印以下調試語句,我看到精度和範圍參數是直線前進,但我不明白如何從長度4的整數數組確定值。

? Test.Precision 
10 
? Test.Scale 
3 
? Test2.Value 
-4294967.298 

4個整數如何指定值?沒有例子,也沒有解釋。

回答

3
int[4] { 2, 1, 0, 0 } 
= 
96-127: 0000 0000 0000 0000 0000 0000 0000 0000 -- 0 
64- 95: 0000 0000 0000 0000 0000 0000 0000 0000 -- 0 
32- 63: 0000 0000 0000 0000 0000 0000 0000 0001 -- 1 
00- 31: 0000 0000 0000 0000 0000 0000 0000 0010 -- 2 

這128位二進制的值是

2^32 + 2^1 = 4294967298 

由於規模爲3,小數位被移動3到左邊,使得它4294967.298
和第三參數來SQLDECIMAL結構爲false使其成爲負值。

+0

我看到,第一陣列位置的值,P1,被視爲一個十進制數,P1^1(或2^0)此值相加與P2 *(2^32)。下一個位置的值是p3 *(2^64),然後是p4 *(2^128)? – ChadD 2013-04-22 00:19:07

+0

我不認爲你會使用p4。它應該會出現一個錯誤,因爲即使SqlDecimal在.net * decimal *類型(102/128位)上鬆散地建模,但SqlDecimal類型的實際精度最高爲38左右。 – RichardTheKiwi 2013-04-22 00:41:28

相關問題