フロートを印刷するための最良の方法はありますか (私は long double を使用しています)? いくつかの方法を試しましたが、すべてのタイプの数値に対して機能するものはないようです。
説明しましょう。
3 つの print ステートメントがあります。
print(M_PI); // from cmath
print(1.234);
print(1.234e-10);
以下は、print(const long double &n) のいくつかの実装の結果です。
シンプルなCOUT
cout << n << endl;
3.14159 // not good
1.234 // good
1.234e-10 // good
正確に計算する
cout.precision(numeric_limits<long double>::digits10);
cout << n << endl;
3.14159265358979312 // good
1.23399999999999999 // bad
1.23400000000000008e-10 // not good
固定精度で計算する
cout.precision(numeric_limits<long double>::digits10);
cout << fixed << n << endl;
3.141592653589793116 // good
1.233999999999999986 // bad
0.000000000123400000 // not good
固定の代わりに「科学的」を使用する可能性は他にもいくつかありますが、それは明らかに望ましくありません。