C#中值的小数类型

C#中值的小数类型

开发工具与关键技术:Visual Studio 2015
作者:徐晶旗
撰写时间:2019年8月8日 

小数类型(decimal)类型数据是高精度的类型数据,占用16个字节(128位),主要为了满足需要高精度的财务和金融计算领域。小数类型数据的取值范围和精度如下:

小数类型数据的范围远远小于浮点类型,不过它的精度比浮点类型高得多。所以相同的数字对于两种类型来说可能表达的内容并不相同。值得注意的是,小数类型的数据后面必须跟m或者M后缀来表示它是decimal类型的,如3.14m、0.28m等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹配。
在程序中书写一个十进制的数值常数时,C#默认按照如下方法判断一个数值常数据属于哪种C#数据数值类型:如果一个数值常数不带小数点,如12345,则这个常的类型是整型。
对于一个数值常数带小数点,如3.14,则该常数的类型是浮点型中的double类型。如果不希望C#使用上述默认的方式来判断一个十进制数值常数的类型,可能通过给数值常数加后缀的方法来指定数值常数的类型。可以使用的数值常数后缀有一下几种:
u(或者U)后缀:加在整形常数后面,代表该常数是uint类型或者ulong类型。具体是其中的哪一种,由常数的实际值决定。C#优先匹配uint类型。
l(或者L)后缀:加在整形常数后面,代表该常数是long类型或者ulong类型。具体是其中的哪一种,由常数的实际值决定。C#优先匹配long类型。
ul后缀:加在任何一种数值常数后面,代表该常数是f(或者F)后缀:加在任何一种数值常数后面,代表该常数是float类型。
d(或者D)后缀:加在任何一种数值常数后面,代表该常数是double类型。
m(或者M)后缀:加在任何一种数值常数后面,代表该常数是decimal类型。
举例如下:
168f 代表float类型的数值168.0
518u 代表uint类型的数值518
36868796ul 代表ulong类型的数值36868796
28.6m 代表decimal类型的数值28.6m
12.68 代表double类型的数值12.68
36 代表int类型的数值36

如果一个数值常数超过了该数值常数的类型的所能表示的范围,C#在对程序进行编译时,将给出错误信息。
刚开始学习,不可能一下子掌握这么多数值类型,先牢记以下几种:
Int型:凡事要表示带符号的整数时,先考虑适用int型;
uint型:凡是需要不带符号的整数时,先考虑使用uint型;
double型:凡是需要做科学计算,并且精度要求不是很高时,考虑使用double型。


版权声明:本文为weixin_44543252原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。