C# decimal类型

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

你可能感兴趣的:(C#)