1 /*my_float.h*/ 2 /* 3 * 系统保留浮点数一种类型,所以c语言对任何涉及浮点运算都产生double类型的结果, 4 * 即时连个操作数都为float类型。 5 * 6 * 上溢、下溢、有效值丢失对浮点算术是固有的。 7 * 变化,不同机器相同的浮点运算结果可能不同。依赖于两个机器的舍入方式。一般机器 8 * 使用快餐式浮点算术计算方法。 9 * float.h主要是补充limit.h 10 * float.h的宏,一般最复杂的数值程序才需关心。 11 */ 12 #ifndef _MY_FLOAT_H_ 13 #define _MY_FLOAT_H_ 14 #ifndef _YVALS_H_ 15 #include "yvals.h" 16 #endif 17 18 typedef struct { 19 int my_ddig, my_dmdig, my_dmax10e, my_dmaxe, my_dmin10e, my_dmine; 20 union { 21 unsigned short us[5]; 22 float f; 23 double d; 24 long double ld; 25 }my_deps, my_dmax, my_dmin; 26 }My_dvals; 27 /* 28 * float.h通过联合来检查浮点。不管何种情况最大浮点数的最高位有效数字的值应该等于0X7FEF,其他等于0XFFFF。 29 * 例如,x86格式double应该为 0XFFFF 0XFFFF 0XFFFF 0X7FEF 30 * 浮点数存储方式不明白,看其他资料IEEE 754标准 31 */