Decimal

Decimal

對SQL Server而言,Decimal可用來保存具有小數點而且數值確定的數值,它不像float和real是用來保存近似值。對於Visual Basic而言,Decimal是其版本5新增的數據類型,目的是滿足進行精密數學運算的需求,它是範圍最大、最精確的浮點數類型。對於Excel而言,DECIMAL()函數用於按給定基數將數字的文本表示形式轉換成十進位數。

基本內容


Decimal 數據類型Decimal 變數存儲為 96 位(12 個位元組)無符號的整型形式,併除以一個 10 的冪數。這個變比因子決定了小數點右面的數字位數,其範圍從 0 到 28。變比因子為 0(沒有小數位)的情形下,最大的可能值為 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 個小數位的情況下,最大值為 +/-7.9228162514264337593543950335,而最小的非零值為 +/-0.0000000000000000000000000001。注意 此時,Decimal 數據類型只能在 Variant中使用,也就是說,不能聲明一變數為 Decimal 的類型。不過可用 Cdec 函數,創建一個子類型為 Decimal 的 Variant。這樣就對了。Decimal類型消除了發生在各種浮點運算中的舍入誤差,並可以準確地表示28個小數位。
Decimal數據類型可以在powerBuilder中使用。直接在編寫控制項的時候使用就可以了。比如:當編寫一個Clicked事件腳本時就可以decimal r這樣使用。
Decimal數據類型可以在Visual Studio編輯器中使用,只要在一個浮點類型的值后加一個大寫或小寫的M,則編輯器會認為這個浮點類型的值是一個Decimal類型。這種128位高精度十進位數表示法通常用在財務計算中。要注意的是,在.NET環境中,計算該類型的值會有性能上的損失,因為它不是基本類型。
decimal[ (p[ , s] )] and numeric[ (p[ , s] )]
固定有效位數和小數位數的數字。當使用最大有效位數時,有效值是從 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同義字是 dec 和 dec(p, s)。numeric 的功能相當於 decimal。

位數


p (有效位數)
可儲存的最大十進位數總數,小數點左右兩側都包括在內。有效位數必須是 1 至最大有效位數 38 之間的值。預設有效位數是 18。
s (小數位數)
小數點右側所能儲存的最大十進位數。小數位數必須是從 0 到 p 的值。只有在指定了有效位數時,才能指定小數位數。預設小數位數是 0;因此,0 <= s <= p。最大儲存體大小會隨著有效位數而不同。
Decimal(n,m)表示數值中共有n位數,其中整數n-m位,小數m位。例:decimal(10,6),數值中共有10位數,其中整數佔4位,小數佔6位。
例:decimal(2,1),此時,插入數據“12.3”、“12”等會出現“數據溢出錯誤”的異常;插入“1.23”或“1.2345...”會自動四捨五入成“1.2”;插入“2”會自動補成“2.0”,以確保2位的有效長度,其中包含1位小數。
當用 int類型會有溢出時,可以用 decimal 類型進行處理,把結果可以用 convert 或是 cast 進行轉換。

用於SQL


命名規則
Decimal的命名格式為:在這裡數字指一個或多個數(0,1,…,9)的組合,因而一百萬能夠被表示為1000000或+100000,數字百分之一(1/100)能夠被表示為0.01。值得注意的是,逗號(,)是不允許在一個 Decimal名稱中出現的。
數據精度
對SQL Server而言,decimal和numeric視為相同的類型,它們可用來保存具有小數點而且數值確定的數值。它們不像float和real是用來保存近似值。此類型的列其聲明方式為decima[(p[,s])]或numericl[(p[,s])]。其中p是此數值全部的位數,含小數部分但不包括小數點,s則是小數的位數。p值稱為此數值的精確度,例如:decimal(10,3)表示共有7位整數3位小數,此例的精確度為10位。此類型的列可保存的值範圍為10-1到-10-1之間。其佔用存儲空間依精確度不同而不同,下表給出Decimal類型變數精確度和佔用空間的關係。
精確度佔用空間
1~95
10~199
20~2813
29~3817
如果使用該類型的變數未指定精確度,則系統使用默認的18位精確度,如果未加以指定小數位數的話,系統的默認值為0位小數。SQL Server搭配的前端開發工具(如VB,Delphi),其所支持的精確度為28位,如果需要超過28位的精確度的話,可以以命令行的方式執行sqlservr.exe啟動SQL Server,並使用/參數即可,在此種狀況下,此類型最大的精確度為38。

用於Visual


Decimal變數存儲為96位(12個位元組)無符號的整型形式帶符號的整型形式,併除以一個10的冪數。這個變比因子決定了小數點右面的數字位數,其範圍從0到28變比因子為0(沒有小數位)的情形下,最大的可能值為+/-79,228,162,514,264,337,593,543,950,335。而在有28個小數位的情況下,最大值為+/-7.9228162514264337593543950335,而最小的非零值為+/-0.0000000000000000000000000001。
注意事項
Decimal數據類型只能在Variant中使用,即不能聲明一變數為DecimaI的類型。不過可用Cde函數,創建一個子類型為Decimal的Variant。

用於Excel


 語法結構為從語法結構可以看出,該函數只有兩個必選參數,各參數的作用如下:
text:該參數用於指定要轉化的數據,其長度必須小於或等於255個字元;
radix:該參數用於指定轉換基數,其值必須大於或等於2(二進位或基數2)且小於或等於36(基數36)。
注意事項
text參數可以是對於基數有效的字母數字字元的任意組合,並且不區分大小寫;
如果任何一個參數超出其限制,十進位可能返回#NUM!或者#VALUE!錯誤值。