有効桁数
VCで倍精度の浮動小数点(つまりはdouble型)を表示しても全部は出てきてくれません。
double p = atan( 1 ) * 4; cout << p << endl;
こうやっても6桁しか出ません。倍精度なら64bitなので10進数にしても有効桁数は15桁ぐらいあるはずです。ただ表示だけならともかく、数値計算の途中でファイルに一時退避させたい場合はこのままだと精度が著しく落ちてしまいます。どうすればよいでしょうか?
ofstream fout( "data.dat" ); fout << d << endl; //↑この時点で有効桁数が落っこちてしまう。
そこで扱うのがマニピュレータです。これはC++流の書式制御です。これはそれなりに分厚いC++の本でないとなかなか載っていません。数値計算では重要なんですけどね。
さて、有効桁数を上げるにはどうしたらいいでしょうか?
include//↑マニピュレータを扱うためのヘッダ double p = atan( 1 ) * 4; cout << setprecision( 15 ) << p << endl; //↑有効桁数を15桁まで引き上げる
これで15桁まで表示してくれます。
他にもマニピュレータはいろいろあります。
unsigned int n = 0xaabbccdd; cout << hex << n << endl; //↑16進数で表示
探してみると、一生使われることの無いようなマニアックなものまであるようです。