[pedretti@roguewave.com] libc/2072: sscanf fails to correctly parse certain floating point numbers
Andreas Jaeger
aj@suse.de
Wed Feb 7 00:04:00 GMT 2001
We received the appended bug report. First analysis shows that
strtold is broken. The output of the program is:
ldval = 3.000000, ret = 1
ldval = 0.000000, ret = 1
ldval = 0.000000, errno: Success
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define _GNU_SOURCE 1
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int
main (void)
{
long double ldval = 0;
int ret;
ret = sscanf("30000000000000000000.00e-19", "%Lf", &ldval);
printf("ldval = %Lf, ret = %d\n", ldval, ret);
ret = sscanf("300000000000000000000.00e-20", "%Lf", &ldval);
printf("ldval = %Lf, ret = %d\n", ldval, ret);
errno = 0;
ldval = strtold ("300000000000000000000.00e-20", NULL);
printf("ldval = %Lf, errno: %m\n", ldval);
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Any ideas?
Andreas
More information about the Libc-alpha
mailing list