c#中有8种整数类型,3种小数类型。他们只有储存方式和计数方式的区别。
这里只讨论多数情况下,可以直接用文字写出来的类型。
更详细的会另写一篇文章。
int类型
计算机中最常用的整数类型是int。
int a=12;
Console.WriteLine(a);
数字类型可以进行数学运算
Console.WriteLine(3+3);
Console.WriteLine(3-3);
Console.WriteLine(3*3);
Console.WriteLine(3/3);
Console.WriteLine(3%3);//求余数
整数的除法只会保留整数部分,小数部分会舍去而不会四舍五入
整数类型的运算不能用0作为除数
int类型的范围
int占4个字节,一个字节是8比特,int就是32个比特,每个比特可以是0或1两种状态。所以int能表示的数一共有2的32次方个。
但是int是可以表示负数的,拿了一个比特做符号,然后因为电脑中计数是从0开始数的,所以最大值要减1.
最终,int能表示的最大值是231-1=2,147,483,647。大约21亿
int的最小值是 负231,因为0已经归在正数那一边了,负数是从–1开始数的。
double类型
c#中使用浮点数储存小数。
浮点的意思是小数点位置可以移动。
例如1200=12*102,可以记作12,然后小数向右偏移2位
0.053=53*10-3,记作53,小数往左挪3位
常用的浮点型是double类型
double d=1.0;
double d2=.1;
小数点前面的数字可以省略,会当作0。
但是小数点后面的数字不能省略,至少要填一个0告诉他是浮点数。
double的范围
浮点数用一部分储存有效数字,一部分储存小数点偏移。这导致他的最大范围能超出他的精确表示范围。
double占8字节,1比特储存符号,52比特储存有效数字,11比特储存小数点偏移。
他的精度大约有15位数,但他的最大范围是308位数。
double的精度丢失
因为精度有限,超出精度的运算是无法进行的。比如1后面跟20个零,这个数字加100就加不了。
但是除此之外,某些特殊值也无法完整表示。例如十进制的1/3一样,某些数无法用有限的二进制表示。
例如以下代码不会产生预期的结果
Console.WriteLine(0.1+0.1+0.1);