gpt4 book ai didi

c++ - setprecision 不应该更改存储在变量中的值吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:34 25 4
gpt4 key购买 nike

我认为 setprecision 不会改变变量本身的值。此外,当您将 setprecision 附加到 cout 时,它只会坚持一次。但是,当我运行代码进行验证时,它不起作用。

考虑以下代码片段:

int main()
{
double x = 9.87654321;
cout << setprecision(3) << fixed << x <<endl; //Returns 9.877 as it should
cout << x << endl; //Returns truncated value 9.877 again though it shouldnt.

return 0;
}

有趣的是,如果我们替换 cout << x << endl;通过一行设置精度说 7,然后它显示正确的值。谁能解释一下这种现象?

最佳答案

您没有将精度重置为原始值,因此它只是使用 3 作为两个输出操作的精度值。

如果你想恢复原来的精度那么你需要保存它。标准 ostream 的初始值为 6,对于许多用途而言可能不够准确。

int main()
{
double x = 9.87654321;

size_t save_prec = cout.precision();
cout << setprecision(3) << fixed << x <<endl;
cout.precision(save_prec);

cout << x << endl;

return 0;
}

关于c++ - setprecision 不应该更改存储在变量中的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com