decimal類型

C#有一個數值類型具有128位精度(參見表2-3)。它適合大而精確的計算,尤其是金融計算。

表2-3 decimal類型

類型

大小

範圍

BCL名稱

有效數字

decimal

128

1.0×1028~大約7.9×1028

System.Decimal

2829

與浮點數不同,decimal類型保證範圍內的所有十進制數都是精確的。所以,對於decimal類型來說,0.1就是0.1,而不是一個近似值。不過,雖然decimal類型具有比浮點類型更高的精度,但它的範圍較小。所以,從浮點類型轉換爲decimal類型可能發生溢出錯誤。此外,decimal的計算速度要稍微慢一些。

高級主題:解析浮點類型和decimal類型

除非超過範圍,否則decimal數字表示的十進制數都是完全準確的。與此相反,用浮點數來表示十進制數,則可能造成舍入錯誤。decimal類型和C#的浮點類型之所以存在這個區別,是因爲decimal類型的指數是十進制數,而浮點類型的指數是二進制的。

一個decimal的指數是±N×10k;其中,N是用96個比特來表示的一個正整數,而28 <= k <= 0。

而一個浮點數是±N×2k的任意數字。其中,N是用固定數量(float是24,double是53)的比特表示的一個正整數,k是149~+104(float)或者1075~+970(double)的任何整數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章