I need to redo printf for a projet, so I actually have a problem with the conversion of float.
I managed to convert almost everything but for the number 1254451555.6
I got an issue: I got 1254451555.59999.
I think it's the calculation to keep the part after the . that doesnt work. 
nbr = ((n - nbr) * 100000000);
I tried different things but I haven't managed to fix it yet.
Do you have any idea?
  int               getlenghtitoa(long long n, int nbase)
  {
         int i;
         i = 0;
         while (n >= 0)
        {
          n /= nbase;
          i++;
          if (n == 0)
               break ;
        }
        return (i);
 }  
 float             ft_nbconv(float n, int i)
{
        while (i-- > 0)
        n = n *10;
        return (n);
 }
int                ft_power(long long nbr)
{
        int i;
        i = 1;
        while(nbr > 10)
        {
            i *= 10;
            nbr = nbr / 10;
         }
        return (i);
 }
char            *ft_conver_f(long double  n)
{
     char               *dest;
     int                    i;
     int                a;
     long long int          nbr;
     int                power;
     nbr = (long long) n;
     i  = getlenghtitoa((long long )n, 10);
     if (!(dest = malloc(sizeof(char) * (i + 8))))
       return (0);
     a = i;
     i = 0;
     power = ft_power(nbr);
     while (a--)
    {
        dest[i++] = ((nbr / power) % 10) + '0';
        if (power != 1)
            power /= 10;
    }
    dest[i++] = '.';
    nbr = ((n - nbr) * 100000000);
    power = 10000000;
    while (a++ < 5)
    {
        if (a == 5)
            if ((((nbr / power)) % 10) >= 5)
           {
               dest[i++] = ((nbr / power) % 10 + 1) + '0';
               break;
           }
        dest[i++] = ((nbr / power) % 10) + '0';
        power /= 10;
    }
    dest[i] = '\0';
    return (dest);
  }
 
    