diff options
Diffstat (limited to 'source/fitz/printf.c')
-rw-r--r-- | source/fitz/printf.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/source/fitz/printf.c b/source/fitz/printf.c index dcc89952..baa1aa3a 100644 --- a/source/fitz/printf.c +++ b/source/fitz/printf.c @@ -23,17 +23,23 @@ static void fmtputc(struct fmtbuf *out, int c) static void fmtfloat(struct fmtbuf *out, float f) { char digits[40], *s = digits; - int exp, neg, ndigits, point; + int exp, ndigits, point; if (isnan(f)) f = 0; if (isinf(f)) f = f < 0 ? -FLT_MAX : FLT_MAX; - fz_ftoa(f, digits, &exp, &neg, &ndigits); - point = exp + ndigits; - - if (neg) + if (signbit(f)) fmtputc(out, '-'); + if (f == 0) + { + fmtputc(out, '0'); + return; + } + + ndigits = fz_grisu(f, digits, &exp); + point = exp + ndigits; + if (point <= 0) { fmtputc(out, '.'); |