将浮点流打印限制为一定长度

Limiting a floating point ostream print to a certain length?

本文关键字:打印      更新时间:2023-10-16

这是一个相关的主题。

正在寻找稍微不同的东西,我正在打印出一个 4x4 浮点矩阵。事实上,我正在使用这种漂亮的打印方法来做到这一点,这将阻止我使用我更熟悉printf格式。

我可以设置ios_base::width()来设置最小宽度以填充零和一,但诸如0.6666667之类的东西搞砸了对齐方式。我想我可以设置precision但它只影响有效数字的数量,而不会影响该值产生的字符总数。我似乎无法在ostream上使用unsetf来设置"默认符号"......即使我可以这样做,我怀疑减号无论如何都会弄乱对齐。

有解决方法吗?

我的临时解决方案是width(7)precision(4)。它在小数点后给了我 4 位数字,还有 3 位空格来放置减号、一位数字和小数点。我必须检查和修改宽度,以适应(某些(大于99.9999或小于-9.9999的值,以保持对齐方式。这样做的好处是567890123不会被打印为5678901,它所做的只是抛弃对齐(很多,它将被打印为567890123.0000(。