Это должно сделать:
#include <stdio.h>
#include <math.h>
int main(void)
{
long double ld, ldi;
long long int lli;
{
int n;
do
{
n = scanf("%Lf", &ld);
} while (1 != n);
}
while (LDBL_EPSILON < fabsl(modfl(ld, &ldi))) {
ld *= 10.;
fprintf(stderr, "%.30Lf\n", ld);
}
lli = (long long int) ldi;
printf("%lld\n", lli);
}
, если LDBL_EPSILON
отсутствует, попробуйте __LDBL_EPSILON __
или подобное ...