如何制作
std::cout << 123456789.12
打印这个:
123456789.12
它总是打印出来:
1.23457e+008
我知道我必须玩旗帜,但我无法弄清楚正确的组合。如果我设置了固定标志,则打印
123456789.120000
答案 0 :(得分:11)
如何... ?
单向: -
#include <iostream>
#include <iomanip>
int main() {
double f =123456789.12;
std::cout << std::fixed << std::setprecision(2) << f << '\n';
return 0;
}
请参阅here
请查找适当的参考资料
答案 1 :(得分:1)
您可以使用:
#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
package具有所有内置类型的特征。
浮点数(float/double/long double
)的特征之一是digits10
attribute。这定义了基数10中浮点数的准确性。
要继续阅读,请查看另一个类似的问题:How do I print a double value with full precision using cout?
答案 2 :(得分:0)
您可以使用boost :: lexical_cast,如下所示:
#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
中找到更多信息