要点:
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;
};