floatscan: fix incorrect count of leading nonzero digits

this off-by-one error was causing values with just one digit past the
decimal point to be treated by the integer case. in many cases it
would yield the correct result, but if expressions are evaluated in
excess precision, double rounding may occur.
This commit is contained in:
Rich Felker 2012-04-16 01:53:52 -04:00
parent 67b25fe0a8
commit 2ac580fdfe
1 changed files with 1 additions and 1 deletions

View File

@ -81,8 +81,8 @@ static long double decfloat(FILE *f, int c, int bits, int emin, int sign, int po
if (lrp!=-1) break;
lrp = dc;
} else if (k < KMAX-2) {
if (c!='0') lnz = dc;
dc++;
if (c!='0') lnz = dc;
if (j) x[k] = x[k]*10 + c-'0';
else x[k] = c-'0';
if (++j==9) {