decimal 关键字表示 128 位数据类型。 同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。
decimal的精度比double高,但数值范围比double小。decimal虽然是128位,但这只是因为它的小数位可以很多,但整体数值范围却没有double大。
| 类型 | 精度 | 范围 | 占用位 |
|---|---|---|---|
| decimal | 28~29位有效 | ±1.0 × 10E−28 to ±7.9 × 10E28 | 128bit |
| double | 15~16位有效 | ±5.0 × 10 E−324 to ±1.7 × 10E308 | 64bit |
| float | 7位 | ±1.5 × 10E−45 to ±3.4 × 10E38 | 32bit |
如果不做任何设置,包含小数点的数值都会被认为是double类型,
如果要将数值以float或者decimal类型来处理,则要进行强制转换。
初始化
初始化decimal类型时需要使用m/M后缀,不用的话会被认为隐式的将double类型转换为decimal类型而报错。(float也是,加f/F后缀)
decimal x = 77.2m; //使用后缀m/M指明为decimal类型
类型转换
当把整型数值赋值给decimal变量时,不需要使用m/M后缀。整型数值会被隐式的转换为decimal类型。
decimal y = 87; //87会被隐式的转换为decimal类型
在浮点型与decimal之间不存在隐式的转换,因此需要强制类型转换
decimal x = 123.4m; //声明decimal类型变量
double y = (double)x; //声明double类型变量y,并将decimal类型变量x强制转换为double类型,并赋值给y
x = (decimal)y; //将double类型变量y强制转换为decimal类型,并赋值给x
本文介绍了decimal数据类型在.NET中的应用,强调了其在财务和货币计算中的优势,具备比double更高的精度但范围较小。decimal类型的精度可达28-29位有效数字,范围为±1.0×10E−28 to ±7.9×10E28,而double类型虽然范围更广,但精度较低。在处理数值时,decimal需要使用m/M后缀标识,转换则需显式进行。文章还提供了类型转换和初始化的例子。
1万+

被折叠的 条评论
为什么被折叠?



