我该如何制作
std::cout << 123456789.12
打印这个:
123456789.12
它总是打印这个:
1.23457e+008
我知道我必须使用标志来操作,但我无法确定正确的组合。如果我设置了fixed标志,它会打印
123456789.120000
如何...?
一种方法:-
#include <iostream>
#include <iomanip>
int main() {
double f =123456789.12;
std::cout << std::fixed << std::setprecision(2) << f << '\n';
return 0;
}
请查看这里
请寻找合适的参考资料
您可以使用:
#include <iostream>
#include <limits>
using namespace std;
int main() {
double c = 123456789.12;
cout.precision(numeric_limits<double>::digits10 + 1);
cout << c << endl;
return 0;
}
limits
包对于所有内置类型都有特征。浮点数(float/double/long double
)之一的特征是digits10
属性。这定义了浮点数在十进制下的精度。要继续阅读,请查看另一个类似的问题:如何使用cout打印具有完全精度的double值?
+1
得到的最后一位数字不应被视为有用信息,除了能够精确地序列化和恢复该值。 - Potatoswatter#include <boost/lexical_cast.hpp>
std::cout << boost::lexical_cast<std::string>(123456789.12);
更多信息可以在http://www.boost.org/doc/libs/1_55_0/doc/html/boost_lexical_cast.html中找到。
std::setprecision(int)
来设置精度。尝试一下std::cout << std::setprecission(20) << 123456789.12 << endl;
。 - DOOMstd::cout <<“123456789.12”;
- Adrian McCarthy