int没有被转换为double

时间:2015-02-23 21:27:50

标签: c++

我有double d = 5;

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

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

我的意思是,当你说bool b = 23;时,它会被转换为b = 1;并在你打印b时打印1。

我想要理由和一般逻辑。我只能在这里猜测并假设更大(双)可以转换为更小(int),但不是更小到更大,是吗?

1 个答案:

答案 0 :(得分:3)

这是格式化问题,内存中的值仍然是5.0浮点数。 double的默认输出格式如果为零则会抑制小数部分。

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

std::cout << std::fixed << d << std::endl;

您也可以使用std::scientific操纵器:

std::cout << std::scientific << d << std::endl;

虽然这种格式也会强制指数。

std::fixedstd::scientific都在iomanip标头中定义。