1. 程式人生 > >單精度浮點數(float)加法計算出錯

單精度浮點數(float)加法計算出錯

它的 位數 nbsp 有效 丟失 com image 替換 原因

場景:

  一個float型的變量賦值1170601,加上19000000,結果出現錯誤。

技術分享

原因:

  float占用4個字節(32位)存儲空間,包括符號位1位,階碼位8位,尾數23位。浮點數精度與它的尾數有關。

  尾數為二進制小數1.m,m為23位的小數。所以浮點數的精度為24位二進制有效位數。2的24次方為16777216。

  19000000 > 16777216,做加法計算之後丟失精度出錯。

解決方法:

  將float用double替換,double占用8個字節(64位)存儲空間,包括符號位1位,階碼位11位,尾數52位。

  技術分享

單精度浮點數(float)加法計算出錯