Implement %g format for printf

This commit is contained in:
Ruslan Kabatsayev
2018-06-30 18:34:24 +03:00
parent e555a718c0
commit f58277f53d
4 changed files with 27 additions and 1 deletions

21
qio.c
View File

@@ -233,6 +233,27 @@ qprintnum(NUMBER *q, int outmode)
PRINTF1("e%ld", exp);
break;
case MODE_REAL_AUTO:
{
const int P = conf->outdigits ? conf->outdigits : 1;
tmpval = *q;
tmpval.num.sign = 0;
exp = qilog10(&tmpval);
const long olddigits = conf->outdigits;
if(P > exp && exp >= -4)
{
conf->outdigits = P - 1 - exp;
qprintnum(q, MODE_REAL);
}
else
{
conf->outdigits = P - 1;
qprintnum(q, MODE_EXP);
}
conf->outdigits = olddigits;
break;
}
case MODE_HEX:
qprintfx(q, 0L);
break;