查询关于c ++中的double

时间:2017-09-15 07:11:35

标签: 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;
}

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

std::cout.precision(10);

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

2 个答案:

答案 0 :(得分:7)

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

请注意,precision设置会考虑所有数字(即在逗号后的之前),以确定逗号可以打印后的位数

答案 1 :(得分:-1)

你没有做错任何事。事实上,你已经解决了这个问题!

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