#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int pow_my(int base,int n)
{
int result=1;
while(n-->0)
{
result *= base;
}
return result;
}
float atol_my(char *str)
{
int integer=0;
int i=0;
int j=0;
int sum=0;
int flag=0;
int bMinus=0;
float decimal=0.0;
//char *str=String;
int len=strlen(str);
printf("len is %d\n",len);
for(i=0;i<len;i++,str++)
{
if(*str=='.') {flag=1;continue;} //flag == 1 标志进入小数部分
if(*str=='-') {bMinus=1;continue;} // bMinus=1 负数标志
if(*str!='.'&&flag==0) //没有遇见小数点 即为整数部分
{
sum = sum * 10+(*str-'0');
}
if(flag==1) // 进入小数部分计算
{
j++; //计算小数的位数
decimal += (float)(*str-'0')/pow_my(10,j);
}
}
if (bMinus) //是负数
{
return -(sum+decimal);
}
else
{
return sum+decimal;
}
}
int main()
{
char *str=(char*)malloc(20*sizeof(char));
printf("Enter The int string Plz\n");
scanf("%s",str);
printf("it is %f\n",atol_my(str));
return 0;
}
atof()函数实现
最新推荐文章于 2024-07-16 11:01:01 发布