查询关于c ++中的double

ano*_*one 2 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;
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,双倍的输出是14049.3,而不是全数.如果我明确提到

std::cout.precision(10);
Run Code Online (Sandbox Code Playgroud)

然后它打印完整的数字.我究竟做错了什么?

rus*_*tyx 7

std :: basic_ios :: init建立的默认精度为6,这意味着输出限制为6位,除非逗号之前需要更多数字.

需要注意的是,precision设置考虑到了所有的数字(即之前之后的逗号)确定如何在逗号后的数位可以打印.

  • @ add349不,不.它只是标准输出的表示. (3认同)