将字符串转换,浮动(不ATOF)用C [英] Converting string, to float (without atof) in C
本文介绍了将字符串转换,浮动(不ATOF)用C的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我设计了一个将字符串转换成浮动的功能。
例如45.5= 45.5
我有这这么远。但它似乎并没有工作。请记住,我们不能使用任何C库函数一样的atoi,ATOF甚至战俘对这一问题。
INT str2float(字符* S)
{
INT NUM = 0;
INT DEC = 0;
双I = 1.0;
诠释了TEN = 1;
/ *****添加你的code HERE ***** / 为(;!* S ='\\ 0'; S ++)
{
如果(* S =='。'){
对于(* S ='\\ 0';!小号++){
DEC =(月* CONT)+(* S - '0');
我++;
}
}其他{
NUM =(NUM * CONT)+(* S - '0');
} }
(!; I = 0;我 - )为{
10 * = 10;
}
DEC = DEC /(TEN);
的printf(%D,DEC);
NUM + =分解;
返回NUM;
}
解决方案
下面是我的尝试:
浮动STOF(为const char * S){
浮苏亚雷斯= 0,实际上= 1;
如果(* S ==' - '){
小号++;
事实上= -1;
};
对(INT point_seen = 0; * S; S ++){
如果(* S =='。'){
point_seen = 1;
继续;
};
INT D = * S - '0';
如果(d取代; = 0&放大器;和D&下; = 9){
如果(point_seen)事实上/ = 10.0f;
苏亚雷斯=苏亚雷斯* 10.0f +(浮点)D;
};
};
返回苏亚雷斯*事实;
};
I'm designing a function that will convert a string into a float. e.g. "45.5" = 45.5
I have this so far. But it doesn't seem to work. Keep in mind, we cannot use any C library functions like atoi, atof or even pow for that matter.
int str2float( char *s )
{
int num = 0;
int dec = 0;
double i = 1.0;
int ten = 1;
/***** ADD YOUR CODE HERE *****/
for(; *s != '\0'; s++)
{
if (*s == '.'){
for(; *s != '\0'; s++){
dec = (dec * CONT) + (*s - '0');
i++;
}
}else{
num = (num * CONT) + (*s - '0');
}
}
for(;i!=0;i--){
ten *= 10;
}
dec = dec / (ten);
printf("%d", dec);
num += dec;
return num;
}
解决方案
Here is my try:
float stof(const char* s){
float rez = 0, fact = 1;
if (*s == '-'){
s++;
fact = -1;
};
for (int point_seen = 0; *s; s++){
if (*s == '.'){
point_seen = 1;
continue;
};
int d = *s - '0';
if (d >= 0 && d <= 9){
if (point_seen) fact /= 10.0f;
rez = rez * 10.0f + (float)d;
};
};
return rez * fact;
};
这篇关于将字符串转换,浮动(不ATOF)用C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文