C语言 函数实现atof
时间: 2023-05-21 15:02:26 浏览: 107
atof函数的实现可以参考以下代码:
```c
double atof(const char *str) {
double result = 0.0;
int sign = 1;
int decimal = 0;
int power = 1;
// 处理符号位
if (*str == '-') {
sign = -1;
str++;
} else if (*str == '+') {
str++;
}
// 处理整数部分
while (*str >= '0' && *str <= '9') {
result = result * 10 + (*str - '0');
str++;
}
// 处理小数部分
if (*str == '.') {
str++;
decimal = 1;
}
while (*str >= '0' && *str <= '9') {
result = result * 10 + (*str - '0');
power *= 10;
str++;
}
// 处理指数部分
if (*str == 'e' || *str == 'E') {
str++;
int exp_sign = 1;
int exp = 0;
if (*str == '-') {
exp_sign = -1;
str++;
} else if (*str == '+') {
str++;
}
while (*str >= '0' && *str <= '9') {
exp = exp * 10 + (*str - '0');
str++;
}
power *= pow(10, exp_sign * exp);
}
// 计算最终结果
result = sign * result / power;
if (decimal) {
result = round(result * pow(10, DECIMAL_PLACES)) / pow(10, DECIMAL_PLACES);
}
return result;
}
```
其中,DECIMAL_PLACES是小数点后保留的位数,可以根据需要自行设置。
阅读全文