在解决特定网站上的问题时,我编写了以下代码:
#include <iostream>
int main()
{
long l{12345678912345};
char ch{'a'};
double d{14049.30493};
std::cout << l <<'\n' << ch <<'\n' << d <<'\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,双倍的输出是14049.3,而不是全数.如果我明确提到
std::cout.precision(10);
Run Code Online (Sandbox Code Playgroud)
然后它打印完整的数字.我究竟做错了什么?
由std :: basic_ios :: init建立的默认精度为6,这意味着输出限制为6位,除非逗号之前需要更多数字.
需要注意的是,precision
设置考虑到了所有的数字(即之前和之后的逗号)确定如何在逗号后的数位可以打印.