打印矩阵[20] [20]双重类型

时间:2015-11-22 18:26:00

标签: c matrix

我正在尝试创建一个矩阵20X20双重类型,因此我可以对它执行操作。

问题在于,当我尝试打印它所以它可能像矩阵一样,因为类型为double,所以有很多零。它看起来不像矩阵。

这就是我写的:

for (i = 0; i < SIZE; i++)
{
    for (j = 0; j < SIZE; j++)
    {   
        mat[i][j] = (rand() % (SIZE + 1) + 0);
    }       
}
for (i = 0; i < SIZE; i++)
{
    for (j = 0; j < SIZE; j++)
        printf("%10lf", mat[i][j]);
    printf("\n\n");
}

如何让它看起来像20X20矩阵并保持双重类型?

1 个答案:

答案 0 :(得分:2)

如果%f的{​​{1}}参数没有指定精度,则使用6位小数。

此外,对于printf,无需使用printf%lf参数在传递时始终会提升为floatWhy does printf() promote a float to a double?)。但通常情况下,double实现会忽略printf前缀。

为了正确的打印对齐,在这种情况下,您可以使用:

l

使用它,将分配4个位置来打印每个数字,小数点将使用一个位置,小数点使用另一个位置(在这种情况下为1)。整数部分剩余两个位置(如果它不适合这两个位置,将使用更多位置并可能打破对齐。

如果在默认的Windows终端中运行:即使使用此对齐,也没有足够的空间在一行上打印矩阵行,并且将使用2行。这是因为默认情况下,Windows终端线宽为80个字符。将其增加到100或更多将解决问题。这可以使用“属性”选项进行更改,甚至可以以编程方式进行更改,如下所述: How can I change the width of a Windows console window?