C++ 关于c++;

C++ 关于c++;,c++,double,C++,Double,在解决特定网站上的问题时,我编写了以下代码: #include <iostream> int main() { long l{12345678912345}; char ch{'a'}; double d{14049.30493}; std::cout << l <<'\n' << ch <<'\n' << d <<'\n'; return 0; } 然后打印出完整

在解决特定网站上的问题时,我编写了以下代码:

#include <iostream>
int main() 
{
    long l{12345678912345};
    char ch{'a'};
    double d{14049.30493};
    std::cout << l <<'\n' << ch <<'\n' << d <<'\n'; 

    return 0;
}

然后打印出完整的数字。我做错了什么

你没有做错什么。事实上,你已经解决了这个问题


std::cout
倾向于舍入双精度,以避免打印异常大的十进制数字。这就是为什么可以设置精度以在点后面打印固定数量的数字。

设置的默认精度为6,这意味着输出限制为6位,除非逗号前需要更多的数字


请注意,
precision
设置在确定逗号后可以打印多少位数时考虑了所有数字(即逗号之前和之后)。

如果
std::court.precision(10)
“修复”了这个问题,那么问题是什么不应该是不言自明的吗?@dreamsofectricsheep不,对我来说。C++中是否使用了双精度的一般规则?我找不到。有规则在哪里结束吗?这是否意味着该数字在以后的计算中也会被截断,如果有的话,使用该变量?在计算中双精度不会被舍入。正如@RustyX在另一个回答中所说,
的默认精度是6Great!非常感谢。另外:这是否意味着该数字在以后的计算中也会被截断,如果有的话,使用该变量?@add349不,不会。这只是标准输出上的表示。
std::cout.precision(10);