//二进制转换01 整数部分 int %2 取余 02 小数部分 float double *2 取整//
float 4 字节 32 比特符号位 1 bit
指数位 8 bits
尾数位 23 bits
2^23 大概 7 位有效数字( 十进制 )//
double 8 字节 64 比特符号位 1 bit
指数位 11 bits
尾数位 52 bits
2^52 大概 15 位有效数字( 十进制 )
//
浮点数比大小const double error=1e-6; // 定义精度01 // == e
bool equal( double a,double b )
{return fabs( a-b )<error;
}02 // != ne
bool not_equal( double a,double b )
{return !euqal(a,b);
}03 // >= ge
bool greater_equal( double a,double b )
{return a>b || equal(a,b) ;
}04 // <= le
bool less_equal( double a,double b )
{return a<b || equal(a,b) ;
}05 // > g
bool greater( double a,double b )
{return a>b && not_equal(a,b);
}06 // < l
bool less( double a,double b )
{return a<b && not_equal(a,b);
}
//指数位都为 1 的特殊值01
负无穷大: 尾数位都为 0 符号为为 1
// -1.#INF00
#include <stdio.h>
int main()
{int nagative_INF=0b11111111100000000000000000000000;printf("%f\n", *(float*)&nagative_INF );return 0;
}02
正无穷大: 尾数位都为 0 符号为为 0
// 1.#INF00
#include <stdio.h>
int main()
{int positive_INF=0b01111111100000000000000000000000;printf("%f\n", *(float*)&positive_INF );return 0;
}03
NaN (Not a Number) 尾数位不全为 0 表示一个无效的数字 或者该数字未经初始化
// -1.#QNAN0
#include <stdio.h>
int main()
{int nagative_NaN=0b11111111100000000000000000001010;printf("%f\n", *(float*)&nagative_NaN );return 0;
}