如何将 C++ 数字格式设置为一定精度?

Posted

技术标签:

【中文标题】如何将 C++ 数字格式设置为一定精度?【英文标题】:How to set up C++ Number Formatting to a certain precision? 【发布时间】:2011-01-20 14:10:13 【问题描述】:

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

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

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

这在 C++ 中是否可行,使用标准库?

【问题讨论】:

【参考方案1】:

使用机械手:

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;

【讨论】:

【参考方案2】:

你也可以使用 boost::format 来做到这一点,我发现这通常可以节省输入:

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

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

boost::format hex08("%08x"); std::cout

【讨论】:

以上是关于如何将 C++ 数字格式设置为一定精度?的主要内容,如果未能解决你的问题,请参考以下文章

具有任意精度和一定比例的数字格式的 Oracle to_char 函数

如何将 C++ 数字格式转换为 C# 数字格式?

在 C++ 中生成随机双精度数

无法将给定对象格式化为数字组合框

将一个字符串解析为两个双精度

如何在 Lisp 中格式化 REPL 输出的数字精度?