当我从 int 切换到 double 时,数组中出现奇怪的反馈
Strange feedback in an array when I switch from int to double
我是 C++ 的新手,正在做我的第一个数组实验。我已经成功地格式化并显示了我想要的内容,但是我这样做是使用整数——当它的目的是让所有数字都是浮点数时。我将数组类型更改为双精度以及相应的函数。现在当我尝试打印出一些数字(在本例中为数字 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);
您正在使用 setprecision(2)
打印您的号码
当使用 int 时,这不会改变它的值。即:它将打印 100
使用 double,但是它将使用 precision,在本例中为 2,因此 1e+02
你可能想要这样的东西,使用 fixed
:
cout << fixed << setprecision(2) << twenty_by_twenty[i][j]; // 100.00
Sets the decimal precision to be used to format floating-point values on output operations.
跟进您的意见:您要求精度为 2。默认情况下,如果科学计数法中的指数值小于精度,并且大于或等于 -4,否则固定。我怀疑你想要的是固定精度;在这种情况下,您必须这样告诉流:std::cout << fixed <<...
.
我是 C++ 的新手,正在做我的第一个数组实验。我已经成功地格式化并显示了我想要的内容,但是我这样做是使用整数——当它的目的是让所有数字都是浮点数时。我将数组类型更改为双精度以及相应的函数。现在当我尝试打印出一些数字(在本例中为数字 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);
您正在使用 setprecision(2)
当使用 int 时,这不会改变它的值。即:它将打印 100
使用 double,但是它将使用 precision,在本例中为 2,因此 1e+02
你可能想要这样的东西,使用 fixed
:
cout << fixed << setprecision(2) << twenty_by_twenty[i][j]; // 100.00
Sets the decimal precision to be used to format floating-point values on output operations.
跟进您的意见:您要求精度为 2。默认情况下,如果科学计数法中的指数值小于精度,并且大于或等于 -4,否则固定。我怀疑你想要的是固定精度;在这种情况下,您必须这样告诉流:std::cout << fixed <<...
.