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

如何在C++中通过cin输入无穷大值给double类型变量?

解决方法

1. 先修改代码以支持无穷大输入

默认情况下C++标准输入流不会解析inf这类字符串为无穷大值,需要先配置流的格式,开启特殊浮点值(无穷大、NaN)的解析支持。修改后的代码如下:

#include <iostream>
#include <limits>
#include <locale>

int main() {
    double m = 0.0;
    // 配置C locale以支持inf/nan的解析
    std::cin.imbue(std::locale("C"));
    // 开启浮点数特殊值解析支持
    std::cin.setf(std::ios::scientific);
    
    std::cout << "Enter slope value:";
    std::cin >> m;
    
    // 验证读取结果
    if (m == std::numeric_limits<double>::infinity()) {
        std::cout << "成功读取正无穷大\n";
    } else if (m == -std::numeric_limits<double>::infinity()) {
        std::cout << "成功读取负无穷大\n";
    } else {
        std::cout << "读取的值: " << m << "\n";
    }
    return 0;
}

2. 控制台输入的合法值

修改代码后,在控制台输入以下任意值,都能让m存储正无穷大(对应竖直线斜率):

  • inf
  • +inf
  • infinity
  • +infinity

若需负无穷大,可输入-inf或-infinity。

注意事项

  • 不同编译器/标准库的支持略有差异,inf是最通用的写法;
  • 不修改流配置的话,输入inf会被判定为无效输入,std::cin进入失败状态,m会保持初始值(比如你代码里的0)。

内容的提问来源于stack exchange,提问作者Sourav Kannantha B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:10:36