在解决特定网站上的问题时,我写了这段代码:
#include <iostream>
int main()
{
long l{12345678912345};
char ch{'a'};
double d{14049.30493};
std::cout << l <<'\n' << ch <<'\n' << d <<'\n';
return 0;
}
令人惊讶的是,双倍的输出是14049.3,而不是全数。如果我明确提到
std::cout.precision(10);
然后打印完整的数字。我究竟做错了什么?
答案 0 :(得分:7)
由std::basic_ios::init建立的默认精度为6,这意味着输出限制为6位,除非逗号前需要更多数字。
请注意,precision
设置会考虑所有数字(即在逗号后的和之前),以确定逗号可以打印后的位数
答案 1 :(得分:-1)
你没有做错任何事。事实上,你已经解决了这个问题!
std::cout
倾向于完成双打,以避免打印异常大的十进制数。这就是为什么你可以设置精度来在点后面打印固定数量的数字。