decimal类型

来源:互联网 发布:手机电脑软件 编辑:程序博客网 时间:2024/04/25 17:25

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)的任何整数。

原创粉丝点击