1. 程式人生 > >c++ 浮點比較和浮點運算

c++ 浮點比較和浮點運算

要點:

      float:32位

      double 64 位

      long double 96 或者128位

標準認為:

      float  至少為6位有效數字。

      double 至少為10位有效數字。

      long double 至少10位有效數字。

要點:

      1.double 型別比float型別的計算要快。

      2.對於浮點型,沒有嚴格意義上的相等,因此比較是否相等,請用if(fabs(a-b)<0.00001);

因此2的16次方是64000,2的17次方是128000;因此我認為應該至少用7位來表示小數點後面的數字。

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    float a=0.111 111 91111111111111111111111111;
    cout<<a<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

 列印結果為:

 0.111  112

所以說。。最後一位是不精確的。

因此。。比較的時候應該將其捨去。。

取前5位比較:最後一位應該忽略之。

       bool compare(){

             if(a-b>0.000 01) return true;

       };