ostream等效于%.2f或%.2lf

Foo*_*Bah 8 c++ precision iostream

double d = 1/2.;
printf("%.2lf\n", d);
Run Code Online (Sandbox Code Playgroud)

打印出来0.50.这就是我想用ostream操纵器复制的内容.但是,没有一个明显的iomanip操纵器允许我设置所需的最小小数位(如果我理解正确,则setprecision设置最大宽度).有没有纯粹iostreamboost方法这样做?

pax*_*blo 12

您可以使用std::fixed,并std::setprecisioniomanip头:

#include <iostream>
#include <iomanip>
int main(void) {
    double d = 1.0 / 2;
    std::cout << std::fixed << std::setprecision(2) << d << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

0.50根据需要输出.


Ben*_*igt 4

setprecision与 结合使用fixed

根据标准第 22.4.2.2.2 节,iostream 上的精度规范与printf. 并给出与 sfixed完全相同的行为。printf%f