浮動小数点の表示方法には、
固定小数点表記(fixed) と指数表記(scientific) があります。
初期状態は defaultfloat になっていて、表示が短くなるほうが自動的に
選択されますが、小数点以下で末尾の連続する 0 は表示されません。
また精度(precision) の値の初期値は 6 で、
fixed や scientific の場合、これは小数点以下の表示桁数になります。
defaultfloat の場合、これは有効数字の桁数になります。
固定小数点で、小数点以下12桁表示にしてみると、
C++
1#include <bits/stdc++.h>
2using namespace std;
3
4int main()
5{
6 int n = 1079;
7
8 cout << fixed << setprecision(12);
9 double tax = 1.08;
10 cout << "tax = " << tax << endl;
11 double x = n/tax;
12
13 cout << "x = " << x << endl;
14
15 double y = x*2.0;
16 double z = x*tax;
17
18 cout << "y = " << y << endl;
19 cout << "floor(y) = " << floor(y) << endl;
20 cout << "z = " << z << endl;
21 cout << "floor(z) = " << floor(z) << endl;
22}
実行結果
text
1tax = 1.080000000000
2x = 999.074074074074
3y = 1998.148148148148
4floor(y) = 1998.000000000000
5z = 1079.000000000000
6floor(z) = 1079.000000000000
cout << fixed << setprecision(12);
を
cout << scientific << setprecision(12);
に変更して、
指数表記で小数点以下12桁表示にしてみると、
text
1tax = 1.080000000000e+00
2x = 9.990740740741e+02
3y = 1.998148148148e+03
4floor(y) = 1.998000000000e+03
5z = 1.079000000000e+03
6floor(z) = 1.079000000000e+03
追記
cout << fixed << setprecision(12);
を
cout << defaultfloat << setprecision(12);
に変更して、
有効桁数12で表示してみると
text
1tax = 1.08
2x = 999.074074074
3y = 1998.14814815
4floor(y) = 1998
5z = 1079
6floor(z) = 1079
小数点以下の 0 が消えています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。