我有double d = 5;
当我打印d时,它打印5而不是5.0
这里的一般逻辑是什么?我认为它应该打印5.0,因为它应该被转换,对吧?
我的意思是,当你说bool b = 23;
时,它会被转换为b = 1;
并在你打印b时打印1。
我想要理由和一般逻辑。我只能在这里猜测并假设更大(双)可以转换为更小(int),但不是更小到更大,是吗?
答案 0 :(得分:3)
这是格式化问题,内存中的值仍然是5.0
浮点数。 double
的默认输出格式如果为零则会抑制小数部分。
您可以使用固定格式强制显示小数部分:
std::cout << std::fixed << d << std::endl;
您也可以使用std::scientific
操纵器:
std::cout << std::scientific << d << std::endl;
虽然这种格式也会强制指数。
std::fixed
和std::scientific
都在iomanip
标头中定义。