C++中将int赋值给float后打印为何输出1而非1.0?
你遇到的这个输出差异和变量的实际存储值无关,是std::cout的默认格式化规则导致的。
- 首先你对赋值逻辑的理解是完全正确的:int类型的1赋值给float类型变量时,变量内部存储的确实是带小数位的1.0,你可以通过
if (i == 1.0f)的判断验证这一点,该条件的运行结果一定为真。 - 问题出在C++标准库的默认输出规则上:
std::cout输出浮点数时,默认会省略末尾无意义的0和冗余的小数点,当浮点数的小数部分全为0时,就会以整数形式输出,你看到的1就是这么来的,不代表变量存的是整数类型的1。 - 如果需要强制输出小数部分,可以引入
<iomanip>头文件,使用std::fixed或std::showpoint操纵符修改输出规则,示例代码如下:
#include <iostream> #include <iomanip> int main() { float i = 1; // 固定小数位输出,默认保留6位,输出1.000000 std::cout << std::fixed << i << std::endl; // 固定保留1位小数,输出1.0 std::cout << std::fixed << std::setprecision(1) << i << std::endl; return 0; }
内容的提问来源于stack exchange,提问作者CapMonkey
相关产品推荐
相关产品推荐

