ostream 相当于 %.2f 或 %.2lf

发布于 2024-12-06 19:46:30 字数 235 浏览 1 评论 0原文

double d = 1/2.;
printf("%.2lf\n", d);

这会打印出 0.50。这就是我想使用 ostream 操纵器复制的内容。然而,没有一个明显的 iomanip 操纵器让我设置所需的最小小数位(如果我理解正确的话,set precision 设置最大宽度)。有没有纯粹的 iostream 或 boost 方法来做到这一点?

double d = 1/2.;
printf("%.2lf\n", d);

This prints out 0.50. This is what I want to replicate using ostream manipulators. However, none of the obvious iomanip manipulators let me set the minimum required decimal places (if I understood correctly, setprecision sets the maximum width). Is there a pure iostream or boost way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ぺ禁宫浮华殁 2024-12-13 19:46:30

您可以使用 iomanip 标头中的 std::fixedstd::set precision

#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

You can use std::fixed and std::setprecision from the iomanip header:

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

This outputs 0.50 as desired.

梦萦几度 2024-12-13 19:46:30

set precisionfixed 结合使用。

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

Use setprecision in combination with fixed.

According to section 22.4.2.2.2 of the standard, precision specifications on iostreams have exactly the same effect as they do for printf. And fixed gives the exact same behavior as printf's %f.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文