我正在尝试创建一个矩阵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矩阵并保持双重类型?
答案 0 :(得分:2)
如果%f
的{{1}}参数没有指定精度,则使用6位小数。
此外,对于printf
,无需使用printf
,%lf
参数在传递时始终会提升为float
(Why 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?