C++已声明变量为double类型,cout输出为何不是带小数的double格式?
问题原因
std::cout默认的浮点数输出规则会自动省略小数部分的末尾无意义0,即使变量实际存储的是double类型的8.0,默认输出也会展示为整数格式的8。该问题和变量类型、是否做强制类型转换无关,属于输出层的格式化规则导致的表现差异。
解决方法
首先需要引入标准库的格式化控制头文件 <iomanip>,之后可根据需求选择对应方案:
- 方案1:固定保留1位小数(匹配你需要的
8.0输出效果)
搭配std::fixed和std::setprecision(1)即可强制输出1位小数,修改后的完整代码如下:
#include <iostream> #include <iomanip> using namespace std; int main() { double d = 4, b, e; cin >> b; e = b + d; cout << fixed << setprecision(1) << e << endl; return 0; }
- 方案2:保留浮点数小数点和对应精度的末尾0,不固定小数位数
可以使用std::showpoint控制符,它会强制输出浮点数的小数点以及默认精度范围内的末尾0,默认精度为6位,可搭配std::setprecision调整整体精度数值。
内容的提问来源于stack exchange,提问作者Nitin Kumar
相关产品推荐
相关产品推荐

