#include <stdio.h>
#include <stdlib.h>
// 自定义 atof 函数
double my_atof(const char* str)
{
int flag = 1; // 符号位,默认是正数
int hasDecimal = 0; // 是否遇到小数点
double fraction = 1.0; // 记录多少位小数
double result = 0.0; // 保存结果,用来返回
if (*str == '-')
{
flag = -1;
str++;
}
else if (*str == '+')
{
str++;
}
while (*str != '\0')
{
if (*str >= '0' && (*str) <= '9')
{
result = result * 10 + (*str) - '0'; // 处理整数部分
}
if (hasDecimal == 1)
{
fraction *= 0.1; // 处理小数部分,每遇到一位小数,权重减小一位
}
if (*str == '.')
{
hasDecimal = 1; // 遇到小数点,标记已经进入小数部分
}
str++; // 移动到下一个字符
}
return result * flag * fraction; // 计算最终结果并返回
}
int main()
{
const char* str = "3.1415926";
double num = my_atof(str);
printf("%lf\n", num);
return 0;
}
12-31
01-12
3975
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交