#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <stdlib.h>
double str2double(char *str)
{
double Int=0.0, Dec=0.0,Result;
int i,len, Int_Len = 0, Dec_Len = 0;
bool dot_flag = 0;
len = strlen(str); //得到字符串长度
for (i = 0;i < len;i++)
{
if (str[i] == '.'&&dot_flag == 0)
{
dot_flag = 1; //发现小数点标志
}
if (dot_flag == 0) //没有发现小数点
{
Int_Len++; //统计整数部分长度
}
else //发现小数点
{
Dec_Len++; //统计小数部分长度
}
}
Dec_Len -= 1; //因为统计了小数点位,故而要减一
for (i = 0;i < Int_Len;i++)
{
Int +=(str[i] - '0')*pow(10, Int_Len - (i + 1)); //转化整数
}
for (i = Int_Len + 1;i < Int_Len + Dec_Len+1;i++)
{
Dec += (str[i] - '0')*pow(10, -(i - Int_Len)); //转换小数部分
}
Result = Int + Dec; //将小数部分与整数部分相加
return Result;
}
void main()
{
char str[]="123456789.123456";
printf("%f\n", str2double(str));
system("pause");
}
输出结果: