Here is my code:
#include <stdio.h>
static long double   ft_ldmod(long double x, long double mod)
{
    long double res;
    long double round;
    res = x / mod;
    round = 0.0L;
    while (res >= 1.0L || res <= -1.0L)
    {
        round += (res < 0.0L) ? -1.0L : 1.0L;
        res += (res < 0.0L) ? 1.0L : -1.0L;
    }
    return ((x / mod - round) * mod);
}
int  main(void)
{
    long double x;
    long double r;
    x = 0.0000042L;
    r = ft_ldmod(x, 1.0L);
    while (r != 0.0L)  // <-- I have an infinite loop here
    {
        x *= 10.0L;
        r = ft_ldmod(x, 1.0L);
    }
    printf("%Lf", x);
    return (0);
}
There is seem something wrong but can not figure it out.
The while loop in the main function loops and don't break.
Even the condition is false, it just pass out...
Helps are welcome, thanks.
 
    