我是 C++ 的新手,正在做我的第一个数组实验。我已经成功地格式化并显示了我想要的内容,但是我这样做是使用整数——当它的目的是让所有数字都是 float 时。我将数组类型更改为 double 以及相应的函数......现在当我尝试打印一些数字(在本例中为数字 100)时,它给我奇怪的反馈。
我环顾四周,发现数组中出现奇怪数字的唯一原因是没有初始化数组。如果我错了,请纠正我,但我觉得我已经做到了(考虑到我使用 int 时的输出是我想要的减去小数位。)但是当我从 INT 切换到 DOUBLE 时 - 我得到了奇怪的反馈。
这是我的双倍程序。 (奇怪的数字)
void print(double twenty_by_twenty[][SIZE])
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
cout << right << setw(5) << setprecision(2) << twenty_by_twenty[i][j];
}
cout << endl;
}
void initialize_array(double twenty_by_twenty[][SIZE])
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
if (j > 0 && j < 19 && i == 0 || j > 0 && j < 19 && i == 19)
{
twenty_by_twenty[i][j] = { 100 };
}
else
{
twenty_by_twenty[i][j] = { 0 };
}
}
}
int main()
double twenty_by_twenty[20][20];
initialize_array(twenty_by_twenty);
print(twenty_by_twenty);
这是我的 int 程序。 (显示我想要的 - 没有小数位)
void print(int twenty_by_twenty[][SIZE])
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
cout << right << setw(5) << setprecision(2) << twenty_by_twenty[i][j];
}
cout << endl;
}
void initialize_array(int twenty_by_twenty[][SIZE])
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
if (j > 0 && j < 19 && i == 0 || j > 0 && j < 19 && i == 19)
{
twenty_by_twenty[i][j] = { 100 };
}
else
{
twenty_by_twenty[i][j] = { 0 };
}
}
}
int main()
int twenty_by_twenty[20][20];
initialize_array(twenty_by_twenty);
print(twenty_by_twenty);
最佳答案
跟进您的评论:您要求精度为 2。默认情况下,std::cout
如果科学记数法中指数的值小于精度,并且大于或等于 -4,则使用科学记数法,否则固定。我怀疑你想要的是固定精度;在这种情况下,您必须这样告诉流:std::cout << fixed <<...
.
关于c++ - 当我从 int 切换到 double 时,数组中出现奇怪的反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439480/