You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:54:05