如何制作"std :: cout << 123456789.12"打印"123456789.12"?

Chr*_*ian 6 c++ cout decimal

我该怎么做

std::cout << 123456789.12
Run Code Online (Sandbox Code Playgroud)

打印这个:

123456789.12
Run Code Online (Sandbox Code Playgroud)

它始终打印这个:

1.23457e+008
Run Code Online (Sandbox Code Playgroud)

我知道我必须玩旗帜,但我无法弄清楚正确的组合.如果我设置固定标志,则打印

123456789.120000
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 11

怎么......

单程 :-

#include <iostream>
#include <iomanip>

int main() {
    double f =123456789.12;
    std::cout << std::fixed << std::setprecision(2) << f << '\n';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

看到这里

请寻找适当的参考资料


her*_*tao 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;
}
Run Code Online (Sandbox Code Playgroud)

基本上,该limits具有所有内置类型的特征。浮点数 ( float/double/long double) 的特征之一是digits10属性。这定义了以 10 为基数的浮点数的精度。

现场观看: http: //ideone.com/Ity9m7


要继续阅读,请查看另一个类似的问题:How do I print a double value with full precision using cout?

  • 请注意,从“+1”获得的最后一个数字不应被视为有用信息,除非能够准确地序列化和恢复该值。 (2认同)