目前制作的app出现了,上述图片的bug,分享下解决心得,及要注意的地方!
出现问题的代码:
之后改进的代码:
可以用>=和<=进行比较的。
浮点数(double)之所以不能用 == 和 != 是因为浮点数在内存中都是按精度来存储的,所以你看到的 3.12也许本来是3.123456取的小数点后2位位精度,所以当与另一个 3.12进行比较时可能会出现很多种情况,如果另一个3.12其实是3.121111取的小数点后2位位精度的话,那么两个数你看着相等,其实是不等的。
所以你办在对浮点数进行比较的时候一般都是相减然后去和一个精度比较。
例如:
a=3.12; b=3.13;
当a和b比较时就应该:
#define N 0.0001
if(a-b<N)
就说明a小于b;.
而不是直接去比较 if( a<b)
后面如果是0的话,会省略,这是C++的一个特性
要保留小数可以这样(下面以保留三位小数为例)
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
float a=100,b=2.34422;
cout<<setiosflags(ios::fixed)<<setprecision(3); //第一种方法
cout<<a<<endl;
cout<<b<<endl;
printf("%.3f\n",a); //第二种方法
return 0;
}
联系客服