首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么将字符串转换为数字

2013-06-26 
如何将字符串转换为数字如下所示:1,“123”——123;2,“123.555”——123.555;如何用一个函数同时实现上面的两种

如何将字符串转换为数字
如下所示:
1,“123”——>123;
2,“123.555”——>123.555;

如何用一个函数同时实现上面的两种情况?
我知道atoi只能完成第1种情况,atof只能完成第2种情况,
[解决办法]
遍历字符串,然后if 判断
[解决办法]
float value;
const char* str = "123.55";
sscanf(str,"%f",&value);

说实话我觉得你不必纠结value最后到底是不是整数,如果你预期可能会溢出那么就用double。最后是不是整数只是取决于你要怎么使用它而已。反正信息是没丢失的。

[解决办法]
先用if判断再用函数
[解决办法]
main()
{
    char *a="12345.111111";
    double ad=0.0;
    int    ai=0;
    int i;
    int j=0;
    
    for(i=0;i<strlen(a);i++)
    {
       if(a[i]=='.')
       {
          printf("%f\n",atof(a));
          j++;
          break;
        }
    }
    
    if(j==0)
    {
          printf("%d\n",atoi(a));
    }
}






char *a="你自己写个数" ,然后装进去,编译,运行,就可以看到结果。
[解决办法]
果断sscanf
[解决办法]
int i = type_convert<int>("123");
double j = type_convert<double>("123.555");


template<class Out_Type, class In_Type>
Out_Type type_convert(const In_Type& T)
{
stringstream ss;
ss<<T;
Out_Type result;
ss>>result;
return result;
}

[解决办法]
引用:
用sprintf()和sscanf()不是更好吗

++这个方法也不错,
不过需要首先判断该字符串表示的是整数还是浮点数。
[解决办法]
人家要求的是从字符串转成数字,一看回帖一大半都说的是从数字转成字符串,哈哈,你们这帮人啊,眼睛让驴给踢啦。
两种情况都用 atof 难道会有什么问题吗?
[解决办法]
char s1[]="123";
char s2[]="123.555";


double d1,d2;
sscanf(s1,"%lf",&d1);
sscanf(s2,"%lf",&d2);
printf("%lg\n%lg\n",d1,d2);


[解决办法]
楼主。。。。
你把这段代码复制运行了再说吧。。。。


main()
{
    char *a="12345.111111";
    double ad=0.0;
    int    ai=0;
    int i;
    int j=0;
    
    for(i=0;i<strlen(a);i++)
    {
       if(a[i]=='.')
       {
          printf("%f\n",atof(a));
          j++;
          break;
        }
    }
    
    if(j==0)
    {
          printf("%d\n",atoi(a));
    }
}


[解决办法]
其实字符串转换成数字,不过是ASCII码 --> 数字的转换。
  如果楼主有兴趣,可以自己实现一个,也很简单。

 2楼和17楼的方法也是推荐使用的。

[解决办法]
楼上你就把我排除在外了???
不知道是我心态有问题,还是咋的。。。
楼主不懂也就罢了,虚心学习嘛倒也是,但我老觉得挑三拣四不结贴很让人烦。
还有那些不懂装懂的,比如楼上这位,混淆视听,自己啥也不懂扯张嘴乱糊弄,哎。。
可惜了CSDN这么好的平台,强烈要求增加版面巡视人员。
[解决办法]
此贴开始人生攻击了。。

“123”的atof的结果应该是123的浮点数形式。

请问LZ, 你需要一个函数,统一处理字符串数字?那用什么类型的返回值呢?

struct
{
    int flag,
    union
    {
         int i,
         double f,
    }
};
么?
否则你的问题就是无意义的
[解决办法]
引用:
Quote: 引用:

此贴开始人生攻击了。。

“123”的atof的结果应该是123的浮点数形式。

请问LZ, 你需要一个函数,统一处理字符串数字?那用什么类型的返回值呢?

struct
{
    int flag,
    union
    {
         int i,
         double f,
    }
};
么?
否则你的问……


你问对了,大概就是要这么一个东东。
比如:
遇到一个“123”——>就会自动转换为int型的123
遇到一个“123.444”——>就会自动转换为float型的123.444
遇到一个“0xFFFFFFFF”——>就会自动转换为long int型的0xFFFFFFFF
但是不需要对应“abc”这种情况。

不需要对应abc是什么意思? 难道是只有遇到”0xFFFFFFFF"才转化?
如果是0xffabcabc就不转换了对吗?

热点排行