如何设置 C++数字格式化到一定的精度?

发布于 2024-08-22 23:55:07 字数 171 浏览 4 评论 0原文

据我所知,您可以使用 iomanip 为浮点数设置精度标志(例如,使用 2.0000 而不是 2.00)。

对于整数,有没有办法做到这一点?

我希望十六进制数字显示为 000e8a00 而不仅仅是 e8a00 或 00000000 而不是 0。

在 C++ 中使用标准库这可能吗?

I understand that you can use iomanip to set a precision flags for floats (e.g. have 2.0000 as opposed to 2.00).

Is there a way possible to do this, for integers?

I would like a hex number to display as 000e8a00 rather than just e8a00 or 00000000 rather than 0.

Is this possible in C++, using the standard libraries?

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

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

发布评论

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

评论(2

我是有多爱你 2024-08-29 23:55:07

有机械手:

std::cout << std::setfill('0') << std::setw(8) << std::hex << 0 << std::endl;

无机械手:

std::cout.fill('0');
std::cout.width(8);
std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 42 << std::endl;

With manipulators:

std::cout << std::setfill('0') << std::setw(8) << std::hex << 0 << std::endl;

Without manipulators:

std::cout.fill('0');
std::cout.width(8);
std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 42 << std::endl;
风启觞 2024-08-29 23:55:07

您还可以使用 boost::format 来做到这一点,我发现这通常可以节省键入:

std::cout << boost::format("%08x\n") % 0xe8a00;

它还允许一些很好的代码重用,如果您有多个地方需要执行相同的格式:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;

You can also do this with boost::format, which I find often saves typing:

std::cout << boost::format("%08x\n") % 0xe8a00;

It also allows for some nice code reuse, if you have multiple places you need to do the same formatting:

boost::format hex08("%08x");
std::cout << hex08 % 0xe8aa << std::endl;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文