Example #1
0
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));
}
Example #2
0
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);
}