关于浮点数的科学计数法和浮点数之间的比较

//
// Created by 王东梁 on 2023/9/14.
//
#include<stdio.h>
#include <math.h>

int main() {
    double ff=123.666;
    printf("%e,%E,%f,%lf\n",ff,ff,ff,ff);
    printf("----------------------\n");
    double dd=1E-10;
    printf("%E,%.16f\n",dd,dd);
    printf("----------------------\n");
    printf("%.3f\n",-0.0049);
    printf("%.30f\n",-0.0049);
    printf("%.3f\n",-0.00049);
    printf("----------------------\n");
    printf("----------------------\n");
    printf("%f\n",12.0/0.0);//在浮点数中可以除以0来表示无穷大
    printf("%f\n",-12.0/0.0);
    printf("%f\n",0.0/0.0);
//    printf("%d\n",12/0);会发生编译不通过,整型的时候不能除以0
    //判断浮点数是否相等,不能直接用两个等号,要用两个浮点数的差来判断,一般用fabs(f1-f2)<le-12来表示相等
    float a,b,c;
    a=1.345f;
    b=1.123f;
    c=a+b;
    //错误方式判断相等
//    if(c==2.468)
//        printf("相等\n");
    //正确方式判断是否相等
//    if(fabs(c-2.468)<1e-12)
//    这里再次出现错误,带小数点的字面量是double而非float,float需要用f或F后缀来表明身份
    if(fabs(c-2.468f)<1e-12)
        printf("相等\n");
    else
        printf("不相等!c=%,10f,或%f\n",c,c);
    //小结,如果没有特殊需要,只使用double
    //现代CPU能直接对double做硬件运算,性能不会比float差,在64位的机器上,数据存储的速度也不比float慢





    return 0;

}