c++ 浮點比較和浮點運算
阿新 • • 發佈:2019-01-30
要點:
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;
};