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

xiaoxiao2021-02-28  61

要点:

      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;

       };

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-72518.html

最新回复(0)