新微赢技术网
标题:
字符窜转换为浮点数
[打印本页]
作者:
qz沒愛過mm
时间:
2009-11-3 02:06
标题:
字符窜转换为浮点数
#include<iostream.h>
#include<string.h>
void main()
{
char *number,s[8];
int data[8];
cout<<"Input String:";
number=s;
cin>>number;
int len=strlen(number);
for(int i=0;i<len;i++)
{
data[i]=(*number)-'0';
number++;
}
for(int k=0;k<len;k++)
cout<<data[k];
cout<<endl;
}
这个程序只能将字符窜转换为整数,如果要转换为浮点数,应该怎么弄呢?
特别是那个小数点应该怎么样转换呢?
作者:
蓝天使者
时间:
2009-11-3 02:06
#include<iostream.h>
#include<string.h>
void main()
{
char *number,s[8];
cout<<"Input String:";
number=s;
cin>>number;
float f = atof(number);
}
作者:
QQ賊aiq嘿
时间:
2009-11-3 02:06
c++里面有相应的函数。
作者:
笨笨洋葱
时间:
2009-11-3 02:06
我不想用函数,希望能够通过代码实现,而不是用已有的函数
作者:
の瘋がす贪恋
时间:
2009-11-3 02:06
int main(int argc, _TCHAR* argv[])
{
char *pCurrent,sNumber[20];
float fData = 0.0, fFloatPart = 0.0;
bool bNegative = false;
cout<<"Input String:";
cin>>sNumber;
pCurrent = sNumber;
if (*pCurrent == '-')
{
bNegative = true;
pCurrent++;
}
else if (*pCurrent == '+')
pCurrent++;
for (; pCurrent != NULL; pCurrent++)
{
if (*pCurrent == '.')
{
fFloatPart = (float)0.1;
pCurrent++;
}
else if (!isdigit(*pCurrent))
break;
if (!fFloatPart)
fData = fData * 10 + (*pCurrent - '0');
else
{
fData += (*pCurrent-'0') * fFloatPart;
fFloatPart *= (float)0.1;
}
}
if (bNegative)
fData *= -1;
cout << endl << fData << endl;
return 0;
}
作者:
轌婲の滿天飛
时间:
2009-11-3 02:06
老兄,if (!isdigit(*pCurrent))这句话是什么意思啊?
作者:
…═☆幻
时间:
2009-11-3 02:06
isdigit(char a)判断a 是不是数字字符,等于 return (a <= '9' && a >= '0')
别的就明白了吧?
作者:
`|楛纞♂ぺ﹖
时间:
2009-11-3 02:06
老兄,能不能把你的解题思路说说呢?我不是很清楚这些算法!谢谢!
作者:
~~精灵小姐$
时间:
2009-11-3 02:06
//我这里没有把正负也加进去,只是思路
//把他当整数处理,然后看从小数点到字符串结束有多少位数,就乘以多少
//个0.1,因为前面是把小数点忽略计算的,这里补充回来
#include <iostream>
#include <string>
using namespace std;
float m_sTof(string s);
int main()
{
cout<<"string:";
string str;
cin>>str;
cout<<endl<<m_sTof(str)<<endl;
system("pause");
return 0;
}
float m_sTof(string s)
{
float x=0;
int f=s.find('.');
for(int i=0;i<s.length();i++)
{
if(isdigit(s[i])){x*=10;x+=(s[i]-'0');}
}
if(f<0)return x;
else
{
for (int i=s.length()-f-1;i;i--)
{
x*=0.1;
}
return x;
}
}
作者:
寂寞男孩
时间:
2009-11-3 02:07
以下是引用lw8484654在2006-5-18 22:02:00的发言:
老兄,能不能把你的解题思路说说呢?我不是很清楚这些算法!谢谢!
先查第一个字符是不是加减号,然后看每个字符,如果是数字就把已经有的结果乘10再加上这个数字,如果是小数点就记下开始小数部份计算,以后碰见数字就把新数字除10灾加进去,如果是其它字符就停止。
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2