编写字符串转换为浮点数函数,代替atof()

在海康的笔试题中出现,将字符串转换为浮点数,并输出,不可以直接用stdlib.h中的函数atof(),现在自己写了一个,输出结果和atof相同。

//字符转化为浮点数,可以直接用atof函数,自己也写了一个
#include<stdio.h>
#include<stdlib.h>//rand(),malloc(),atof()
#include<string.h>
#include<math.h>
double change(char str[]){
	double num=0.0;
	int len=strlen(str);
	int fushu=0;//负数标志
	char *p,*i;
	p=str;
	if(str[0]=='-'){//判断正负号
		fushu=1;
		p++;	
	}
	int temp;//当前元素的数值
	while(p<=str+len){
		if(*p>='0'&&*p<='9'){
			temp=*p-'0';//数值本身
			num=num*10+temp;//整数部分处理
			p++;
			continue;//继续循环
		}
		if(*p=='.'){
			p++;
			int n=1;//记录当前为小数点后几位
			for(i=p;i<=str+len;i++){
				if(*p>='0'&&*p<='9'){
					temp=*p-'0';
					num=num+temp*pow(0.1,n);//小数部分处理
					p++;
					n++;
				}
				else break;//退出循环
			}
			if(fushu==0)return num;
			else return num*(-1.0);
		}
		else break;
	}
	if(fushu==0)return num;
	else return num*(-1);
}	
int main(){
	double val,val1;
	char str[20];
	gets(str);
	val1=change(str);
	val=atof(str);//<stdlib.h>
	printf("字符串值=%s,浮点数=%lf,自己写的函数=%lf\n",str,val,val1);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值