C++ int未转换为double

C++ int未转换为double,c++,C++,我有double d=5 当我打印d时,它打印的是5,而不是5.0 这里的一般逻辑是什么?我认为它应该打印5.0,因为它应该被转换,对吗 我的意思是,当你说boolb23,它被转换为b=1并在打印b时打印1 我想知道原因和一般逻辑。我只能在这里猜测,并假设较大(double)可以转换为较小(int),但不能从较小转换为较大,是吗?这是一个格式问题,内存中的值仍然是5.0浮点值。如果小数部分为零,double的默认输出格式将不显示小数部分 可以使用固定格式强制显示小数部分: std::cout &

我有
double d=5

当我打印d时,它打印的是5,而不是5.0

这里的一般逻辑是什么?我认为它应该打印5.0,因为它应该被转换,对吗

我的意思是,当你说
boolb23,它被转换为
b=1并在打印b时打印1


我想知道原因和一般逻辑。我只能在这里猜测,并假设较大(double)可以转换为较小(int),但不能从较小转换为较大,是吗?

这是一个格式问题,内存中的值仍然是
5.0
浮点值。如果小数部分为零,
double
的默认输出格式将不显示小数部分

可以使用固定格式强制显示小数部分:

std::cout << std::fixed << d << std::endl;
虽然这种格式也会强制指数


std::fixed
std::scientific
都在
iomanip
标题中定义。

如何打印?printf(“%f”,d);然后看看你得到了什么。好吧,这是我们所期望的,但我想用cout。这里发生了什么?试试:std::cout
std::cout << std::scientific << d << std::endl;