小数类型的变量有float,double。它们的关系相当于int和long的关系,符号分别是%f和%lf。据说也有long double,但是我还没有使用成功过这个类型。没事double就够用了。
和整数类型相似的地方就不多说了,这里就说几个特殊的地方吧。看下面这个程序代码
#include<stdio.h> int main(void) { float a; a=1/2; printf("%f",a); return 0; }
请猜测输出结果,猜完以后看答案
0.000000
可能会有点出人意料,但事实就是如此。
原因是这样的:还记得我前面说过的,在整数的运算里/默认为是整除符号,所以当计算机运算完1/2之后返回的结果是0。
解决方法有两个,一个是把1写作1.0或者1.这样系统就会知道你要进行的是小数运算,或者在1/2前面加上(float)这样就强制让系统以float的方式处理这个表达式(如果a是double类型的话就在前面加(double))。下面是例程:
#include<stdio.h> int main(void) { float a; a=(float)1/2; printf("%f",a); return 0; }
#include<stdio.h> int main(void) { float a; a=1./2; printf("%f",a); return 0; }
输出结果
0.500000
下面再讲一下控制输出小数位数的问题。就是在printf里面控制。以float类型举例,%.1f代表输出一位小数,%.2f两位小数,其他同理。不加按默认小数位数(6位)输出。读者可以自行尝试。
关于小数类型就讲这些。