上一章我们学了整数型,整数型可以用来表示整数,那小数怎么表示呢?
我们先用整数型来表示一下小数试试。

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(){
int a,b;
a=11.514;
b=0.00001;
printf("%d\n",a);
printf("%d\n",b);
return 0;
}

xXBaRJ.png
我们发现打印后a=11,b=0,小数部分丢失了。这时候我们就要用新类型来存放小数。
在C语言中小数用浮点型来表示。
我们将整数型int替换为浮点型float再试试。
注意!浮点型的占位符不是%d而是%f

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(){
float a,b;
a=11.514;
b=0.00001;
printf("%f\n",a);//注意!浮点型的占位符不是%d而是%f
printf("%f\n",b);//注意!浮点型的占位符不是%d而是%f
return 0;
}

xXB2Je.png
可以看见小数被成功表示了,但是float并不能表示所有的小数,例如123.12345就会被打印为123.123444(可以自己试试)。
浮点数并不能表示无限精确,它会存在误差。
在C语言中float可以表示6位有效数字。
在表示123.12345时只有6位是准确的也就是123.123后面的就不准确了,存在误差。
要表示更高精度的浮点数我们就要将float替换成更高级的double。
现在我们用double来表示一下float不能表示的123.12345。

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
double a;
a=123.12345;
printf("%f\n",a);//注意!浮点型的占位符不是%d而是%f
return 0;
}

xXBxLq.png
可以看见123.12345正确的被打印了。
现在我们用上一章的sizeof关键字来测试一下浮点型所占字节的情况。

1
2
3
4
5
6
7
#include<stdio.h>
int main()
{
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
return 0;
}

可以得出float占4字节,double占8字节。