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

C语言从字符串提取浮点数仅返回整数,求技术解决方案

问题分析与解决方案

嘿,我帮你排查了下代码,其实你的代码逻辑本身是没问题的——它确实能正确读取浮点数值,但你觉得“只返回整数类型结果”,大概率是这几个原因之一:

可能的问题原因

  • 你输入的就是整数:比如你输入5而不是5.6,程序会返回5.000,这是浮点数的正常表示,只是小数位都是0而已,并非真的变成了整数类型。
  • 你用了逗号作为小数点:很多地区习惯用逗号(比如3,14)代替点号,但C语言的sscanf默认只认.作为小数点,这时候它会只读取逗号前的整数部分,导致你看到的结果像是整数。

对应的解决办法

  1. 如果是第一种情况,完全不用担心——这是浮点数的正常行为,5.000本身就是合法的浮点数结果。
  2. 如果是第二种情况,你可以在读取输入后,先把字符串里的逗号替换成点号,再进行解析。修改后的daNum函数如下:
float daNum(void) {
    char store[121] = {0};
    float numba = 0;
    int const kInvalInput = -5;
    
    fgets(store, 121, stdin);
    
    // 把输入里的逗号替换成点号,适配不同地区的小数点习惯
    for (int i = 0; store[i] != '\0'; i++) {
        if (store[i] == ',') {
            store[i] = '.';
        }
    }
    
    if( sscanf(store, "%f", &numba) != 1) {
        numba = kInvalInput;
    }
    return numba;
}

测试验证

比如你输入3,14,这段代码会先把它转换成3.14,最终输出your value is:3.140,就能得到正确的浮点结果啦。

内容的提问来源于stack exchange,提问作者JeanBook

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:12:48