2014年1月6日 星期一

[ComputerScience] 計算機浮點數的科學符號

若不是寫科學運算的相關程式,其實還蠻少使用到浮點數運算,因自己也跟著流行,研究四軸飛行器的相關程式,裡頭運用到ARHS/IMU的演算法(四元數與歐拉角之間的轉換),演算法裡有大量的浮點數運算,才使得讓我注意到浮點數運算的複雜程度,"使用浮點數最最基本的觀念"文章裡詳細介紹了浮點數的基本觀念,有興趣的朋友可以詳閱。
  • 浮點數計算常常會顯示科學符號代表的含義如下
    Ex :
    9.1448e005  , 9.1148 * 10的5次方

    9.1448e-005 , 9.1148 * 10的-5次方
  •  ARM 32bit的浮點數限制 (Reference [7] )
    常数函義
    FLT_MAXfloat 的最大值3.40282347e+38F
    FLT_MINfloat 的最小标准化正浮点数值1.175494351e–38F
    DBL_MAXdouble 的最大值1.79769313486231571e+308
    DBL_MINdouble 的最小标准化正浮点数值2.22507385850720138e–308
    LDBL_MAXlong double 的最大值1.79769313486231571e+308
    LDBL_MINlong double 的最小标准化正浮点数值2.22507385850720138e–308
    FLT_MAX_EXPfloat 类型以 2 为底的指数的最大值128
    FLT_MIN_EXPfloat 类型以 2 为底的指数的最小值–125
    DBL_MAX_EXPdouble 类型以 2 为底的指数的最大值1 024
    DBL_MIN_EXPdouble 类型以 2 为底的指数的最小值–1 021
    LDBL_MAX_EXPlong double 类型以 2 为底的指数的最大值1 024
    LDBL_MIN_EXPlong double 类型以 2 为底的指数的最小值–1 021
    FLT_MAX_10_EXPfloat 类型以 10 为底的指数的最大值38
    FLT_MIN_10_EXPfloat 类型以 10 为底的指数的最小值–37
    DBL_MAX_10_EXPdouble 类型以 10 为底的指数的最大值308
    DBL_MIN_10_EXPdouble 类型以 10 为底的指数的最小值–307
    LDBL_MAX_10_EXPlong double 类型以 10 为底的指数的最大值308
    LDBL_MIN_10_EXPlong double 类型以 10 为底的指数的最小值–307
Reference:
[1] 使用浮點數最最基本的觀念
[2] ARHS/IMU
[3] [C/C++] 研究long long * float overflow 可能導致的誤差
[4] D-4 浮點數
[5] (原創) 如何處理signed integer的加法運算與overflow? (SOC) (Verilog) 
[6] 實數(浮點數)
[7] 浮点限制 

沒有留言:

張貼留言