是否有一种打印浮点数的最佳方法(我使用的是长双打)?我尝试了几种方法,但似乎没有一种方法适用于所有类型的数字。
让我来说明一下。
我有三个打印语句。
print(M_PI); // from cmath
print(1.234);
print(1.234e-10);
以下是一些 print(const long double &n) 实现的结果:
简单的输出
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
cout.precision(numeric_limits<long double>::digits10);
cout << fixed << n << endl;
3.141592653589793116 // good
1.233999999999999986 // bad
0.000000000123400000 // not good
“科学”而不是固定的还有其他几种可能性,但这显然是不可取的。