浮点数是个极其容易犯错误的点!
如下面这个代码:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
double i;
//scanf("%d",&n);
for(i=0;i!=10;i+=0.1)
{
printf("%.1lf\n",i);
}
return 0;
}
运行之后就是死循环!因为c语言中double类型数据计算是有误差的,也就是说你每次加0.1,可能永远得不到整10,有可能是0.900001。
方法就是把for循环中的i!=10改成i<10或i<=10,浮点数计算时一定不能让它们相等!这样程序就会从0.0开始输出直到10.0为止。浮点数无法精确表示大多数数字,很多只是个四舍五入的约数。