c++ 浮点比较和浮点运算

来源:互联网 发布:solaris系统 知乎 编辑:程序博客网 时间:2024/05/16 11:55

要点:

      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的10次方是1K,20次是1M,30次是1T

 

因此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;

       };