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 */