首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有setw和setw精度的打印浮标--输出不对齐

带有setw和setw精度的打印浮标--输出不对齐
EN

Stack Overflow用户
提问于 2020-08-03 22:38:21
回答 1查看 208关注 0票数 0

我正在尝试使用C++使用std::cout打印矩阵,但我不知道如何做正确的操作。我尝试过像setw()setprecision()这样的变体,但仍然没有达到预期的外观(您可以在这个问题的底部看到它)。

Matrix.cpp

代码语言:javascript
复制
template<class T>
class Matrix
{
public:

    ...

    void print(int precision=5);

    ...

private:
    size_t rows;
    size_t cols;
    std::vector<T> data;
};

template<class T>
void Matrix<T>::print(int precision)
{
    for (int i = 0; i < (int)this->rows; i++) {
        for (int j = 0; j < (int)this->cols; j++) {
            //cout << ... << " ";
        }
        cout << endl;
    }
    cout << endl;
}

Main.cpp

代码语言:javascript
复制
    ...
int main()
{
    ...
    matrix.print(4);
    ...
}

一些尝试:

代码语言:javascript
复制
cout << data.at(i*cols + j) << " ";
Output:
-21.4269 -11.9088 -14.8804 -11.1715 3.77597
16.1763 10.68 7.99879 -0.849034 -11.9758
15.7518 -19.1033 6.27838 -3.86534 21.4716
代码语言:javascript
复制
cout << fixed << data.at(i*cols + j) << " ";
Output:
-21.426937 -11.908819 -14.880438 -11.171500 3.775967
16.176332 10.679954 7.998794 -0.849034 -11.975848
15.751815 -19.103265 6.278383 -3.865339 21.471623

在这里,我试图使用set精度()

代码语言:javascript
复制
cout << setprecision(precision) << data.at(i*cols + j) << " ";
Output:
-21.43 -11.91 -14.88 -11.17 3.776
16.18 10.68 7.999 -0.849 -11.98
15.75 -19.1 6.278 -3.865 21.47
代码语言:javascript
复制
cout << setprecision(precision) << fixed << data.at(i*cols + j) << " ";
Output:
-21.4269 -11.9088 -14.8804 -11.1715 3.7760
16.1763 10.6800 7.9988 -0.8490 -11.9758
15.7518 -19.1033 6.2784 -3.8653 21.4716

这里我使用setw()

代码语言:javascript
复制
cout << setw(precision) << data.at(i*cols + j) << " ";
Output:
-21.4269 -11.9088 -14.8804 -11.1715 3.77597
16.1763 10.68 7.99879 -0.849034 -11.9758
15.7518 -19.1033 6.27838 -3.86534 21.4716
代码语言:javascript
复制
cout << setw(precision) << fixed << data.at(i*cols + j) << " ";
Output:
-21.426937 -11.908819 -14.880438 -11.171500 3.775967
16.176332 10.679954 7.998794 -0.849034 -11.975848
15.751815 -19.103265 6.278383 -3.865339 21.471623

我真正需要的是:

代码语言:javascript
复制
-21.42 -11.91 -14.88 -11.17 3.7760
16.176 10.680 7.9988 -0.849 -11.98
15.752 -19.10 6.2784 -3.865 21.472
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 12:10:43

我只需要用更大的论据来调用函数:

代码语言:javascript
复制
cout << setw(10) << fixed << data.at(i*cols + j) << " ";
Output:
-21.426937 -11.908819 -14.880438 -11.171500   3.775967
 16.176332  10.679954   7.998794  -0.849034 -11.975848
 15.751815 -19.103265   6.278383  -3.865339  21.471623

是的,提供@Andy的链接下的答案甚至更好,因为它更可定制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63237845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档