double ft_atof(const char *str) { double result; double rest; int sign; if (!str || !*str) return (0); result = 0; rest = 0; sign = 1; if (*str && *str == '-') { str++; sign = -1; } while (*str && *str >= '0' && *str <= '9') { result = result * 10 + (*str - '0'); str++; } if (*str == '.' && *(str + 1) >= '0' && *(str + 1) <= '9' && *str && *(str + 1)) rest = ft_convert_rest(str); return (sign * (result + rest)); }
static void ft_convert(char *str, double n, size_t precision) { int dot; dot = 0; if (n < 0) { *str = '-'; n = -n; str++; } while (n >= 1 && dot++ >= 0) n /= 10; ft_convert_rest(str, n, precision, dot); }