编辑代码

#include <stdio.h>
int main () {
    /*
     浮点类型
        1.用于表示小数和科学计数法的数据
        2.浮点类型可以简称为实型数据
    float
        1.单精度实型
        2.可以精确到小数点后六位
        3.打印float类型数据需要使用%f
             如果数据为6为以上小数
             那么在打印时
             也只能从控制台上看到6位小数
             从第七位开始会由cpu的误差机制
             进行处理第七位以后的数据
        4.使用%,数字f的形式
          可以在控制台上打印固定位数的小数
          (1)当固定位数小于精度时
               会根据四舍五入的形式
               对数据进行处理
          (2)当固定位数大于精度时
               会根据数据误差的形式
               对数据进行处理
    double
        1.双精度实型
        2.可以精确到小数点后10位数字
        3.打印double类型数据时
          尽量采用%lf的形式进行打印
          但是在控制台上打印数据时
          无论是%f还是%lf
          默认只打印小数点后6位数字
        4.在打印指定数位时
          在超过小数点后10位以上后
          double类型数据就已经出现了数据误差
          只不过数据误差很小
          并不会影响数据的准确性
          直到在第16位时才会出现较大误差
    long double
         1.长双精度实型
         2.可以精确到小数点后18位
         3.打印时需要使用%llf打印数据
           不能使用%f或%lf
           否则数据在控制台上只能是0.000000
         4.当使用指定位数打印时
           在第15位时就会出现误差的情况
           但并不是精确程度的问题
           而是需要在特定设备上
           才能正常显示准确位数
    注意:
         1.当使用科学计数法数据定义实型变量时
           次方数要小于等于小数位
           不能超过小数位
           否则会出现程序的运行错误
    实型计算
         1.无论是定义还是计算
           只要没有了小数部分的数据
           都会在小数部分进行补0
         2.整形变量在接收实型数据运算结果时
           是没有小数部分的
           换做用%f打印的话
           甚至会出现较大误差
         3.在计算机的计算中
           都是采用二进制进行计算的
           而二进制中是没有办法精确的表示0.1的
           就像十进制中没有办法精确表示1/3一样
    */
    float a = 5.985413;
    printf("a = %f\n", a);//a = 5.985413
    a = 5.9844134;
    printf("a = %f\n", a);//a = 5.984414
    printf("a = %.7f\n", a);//a = 5.9844136
    printf("a = %.2f\n", a);//a = 5.98
    double a0 = 6.9845327684156719;
    printf("a0 = %f\n", a0);//a0 = 6.984533
    printf("a0 = %lf\n", a0);//a0 = 6.984533
    printf("a0 = %.10f\n", a0);//a0 = 6.9845327684
    printf("a0 = %.10lf\n", a0);//a0 = 6.9845327684
    printf("a0 = %.16f\n", a0);//a0 = 6.9845327684156722
    printf("a0 = %.16lf\n", a0);//a0 = 6.9845327684156722
    long double a1 = 9.156879642587946231;
    printf("a1 = %lf\n", a1);//a1 = 0.000000
    printf("a1 = %llf\n", a1);//a1 = 9.156880
    printf("a1 = %.18llf\n", a1);//a1 = 9.156879642587945511
    long double a2 = 12.34e2;
    printf("a2 = %llf\n", a2);//a2 = 1234.000000
    a2 = 1234000;
    printf("a2 = %llf\n", a2);//a2 = 1234000.000000
    a = 5.1 + 4.9;
    printf("a = %f\n", a);//a = 10.000000
    int b = 6.3+ 3.2;
    printf("b = %d\n", b);//b = 9
    printf("b = %f\n", b);//b = 10.000000
    return 0;
}