关于浮点数的科学计数法和浮点数之间的比较
//
// 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;
}