なぜ「2=」の出力が驚きの結果をもたらすのか、光を当ててください。この場合の double の問題は何ですか。
double 値の除算に関する制約。
C ++でそのようなことを回避するオプションはありますか.
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
int main()
{
double d1,d2,d3,d4,d5;
double d = 0.010000;
d1 = 1000000.28;
d2 = 10000000.28;
d3 = 100000000.28;
d4 = 1000000000.28;
d5 = 10000000000.28;
cout.precision(15);
cout<<"1="<<floor(d1/d)<<endl;
cout<<"2="<<floor(d2/d)<<endl;
cout<<"3="<<floor(d3/d)<<endl;
cout<<"4="<<floor(d4/d)<<endl;
cout<<"5="<<floor(d5/d)<<endl;
return 0;
}
o/p
====
1 = 1000000.28;
2 = 10000000.27;
3 = 100000000.28;
4 = 1000000000.28;
5 = 10000000000.28;