43 lines
694 B
C
43 lines
694 B
C
#include <stdio.h>
|
|
#include "libft.h"
|
|
|
|
double ft_atof(const char *str)
|
|
{
|
|
double nbr;
|
|
int i;
|
|
int negatif;
|
|
double fraction;
|
|
|
|
i = 0;
|
|
negatif = 1;
|
|
nbr = 0.0;
|
|
fraction = 1.0;
|
|
|
|
// Skip leading whitespace
|
|
while ((str[i] == ' ') || (str[i] > 8 && str[i] < 14))
|
|
i++;
|
|
|
|
// Handle optional sign
|
|
if (str[i] == '-')
|
|
negatif = -1;
|
|
if (str[i] == '+' || str[i] == '-')
|
|
i++;
|
|
|
|
// Parse integer part
|
|
while (str[i] >= '0' && str[i] <= '9')
|
|
nbr = nbr * 10.0 + (str[i++] - '0');
|
|
|
|
// Parse fractional part if '.' is present
|
|
if (str[i] == '.')
|
|
{
|
|
i++;
|
|
while (str[i] >= '0' && str[i] <= '9')
|
|
{
|
|
fraction /= 10.0;
|
|
nbr += (str[i++] - '0') * fraction;
|
|
}
|
|
}
|
|
|
|
return (nbr * negatif);
|
|
}
|