#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <vld.h>
double change(char* str);
int main()
{
printf("%lf\n", atof((char*)"3.1415926"));
printf("%lf\n", change((char*)"3.1415926"));
//#pragma message("hello")
return 0;
}
double change(char* str)
{
int slen = strlen(str);
char* ps = (char*)malloc(slen + 1);
memcpy(ps, str, slen);
ps[slen] = '\0';
double r = 0.00l; //末尾L表示long double,末尾f表示float
//查找有没有小数点,以及小数点得位置
char ch = NULL;
int bb = 0;
int aa = 0;
int tmp = 0;
while (*str!='\0')
{
ch = *str;
if (ch == '.')
aa = bb;
if (ch >= 48 && ch <= 57)
{
tmp = ch - 0x30;
r = r * 10 + tmp;
}
str++;
bb++;
}
r = r / pow(10, bb-aa-1);
#ifdef _DEBUG
printf("slen:%d bb:%d aa:%d\n", slen, bb, aa);
#endif /*_DEBUG*/
free(ps);
return r;
}