%。2f或%.2lf的等效流

问题描述 投票:8回答:3
double d = 1/2.;
printf("%.2lf\n", d);

将打印出0.50。这就是我要使用ostream机械手进行复制的内容。但是,没有任何明显的iomanip操纵器让我设置所需的最小小数位(如果我理解正确,setprecision会设置最大宽度)。是否有纯粹的iostreamboost方法可以做到这一点?

c++ iostream precision
3个回答
4
投票

setprecisionfixed结合使用。

根据标准的22.4.2.2.2节,关于iostream的精度规范与printf具有完全相同的效果。 fixed的行为与printf%f完全相同。


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;
}

根据需要输出0.50


© www.soinside.com 2019 - 2024. All rights reserved.