浮点型变量是用来存储小数数值的。在C语言中, 浮点型变量分为两种: 单精度浮点数(float)、 双精度浮点数(double), 但是double型变量所表示的浮点数比 float 型变量更精确。

    由于浮点型变量是由有限的存储单元组成的,因此只能提供有限的有效数字。在有效位以外的数字将被舍去,这样可能会产生一些误差。

    区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。

    举个例子︰圆周率3.1415926535这个数字,如果用float来表示,最多只能精确到小数点后面的6位。而double大约能精确到小数点后面的15位左右。具体精确到几位,跟所用的编译器有关,但是各个编辑器编译器之间,也是相差不大的。

    1. #include <stdio.h>
    2. int main()
    3. {
    4. //传统方式赋值
    5. float a = 3.14f; //或3.14F
    6. double b = 3.14;
    7. printf("a = %f\n", a);
    8. printf("b = %lf\n", b);
    9. //科学法赋值
    10. a = 3.2e3f; //3.2*1000 = 3200,e可以写E
    11. printf("a1 = %f\n", a);
    12. a = 100e-3f; //100*0.001 = 0.1
    13. printf("a2 = %f\n", a);
    14. a = 3.1415926f;
    15. printf("a3 = %f\n", a); //结果为3.141593
    16. return 0;
    17. }
    1. #include <stdio.h>
    2. #include <limits.h>
    3. int main() {
    4. float a_float = 3.14f; // 6, 7~8 +-10^-37 ~ 10^37
    5. printf("size of float: %d\n", sizeof(float));
    6. double a_double = 3.14; // 15~16
    7. printf("size of double: %d\n", sizeof(double));
    8. float lat = 39.90815f;
    9. printf("%f", 39.908156f - lat);
    10. float money = 3.14f; // error, never use float or double to describe money
    11. return 0;
    12. }