fix float formatting
This commit is contained in:
+21
-1
@@ -655,6 +655,8 @@ static void fmtfp(char *buffer, size_t *currlen, size_t maxlen,
|
||||
int zpadlen = 0;
|
||||
int caps = 0;
|
||||
int index;
|
||||
int fzeropad = 0;
|
||||
int fzerocnt = 0;
|
||||
double intpart;
|
||||
double fracpart;
|
||||
double temp;
|
||||
@@ -728,6 +730,13 @@ static void fmtfp(char *buffer, size_t *currlen, size_t maxlen,
|
||||
|
||||
/* Convert fractional part */
|
||||
if (fracpart) {
|
||||
// leading zeros in the fractional part
|
||||
fzeropad = 0;
|
||||
fzerocnt = max - 1;
|
||||
while (fracpart < POW10(fzerocnt)) {
|
||||
fzeropad++;
|
||||
fzerocnt--;
|
||||
}
|
||||
do {
|
||||
temp = fracpart;
|
||||
my_modf(fracpart * 0.1, &fracpart);
|
||||
@@ -785,9 +794,20 @@ static void fmtfp(char *buffer, size_t *currlen, size_t maxlen,
|
||||
if (max > 0) {
|
||||
dopr_outch(buffer, currlen, maxlen, '.');
|
||||
|
||||
while (fplace > 0)
|
||||
if (zpadlen > fzeropad) {
|
||||
zpadlen -= fzeropad;
|
||||
} else {
|
||||
zpadlen = 0;
|
||||
}
|
||||
|
||||
while (fzeropad-- > 0) {
|
||||
dopr_outch(buffer, currlen, maxlen, '0');
|
||||
}
|
||||
|
||||
while (fplace > 0) {
|
||||
dopr_outch(buffer, currlen, maxlen, fconvert[--fplace]);
|
||||
}
|
||||
}
|
||||
|
||||
while (zpadlen > 0) {
|
||||
dopr_outch(buffer, currlen, maxlen, '0');
|
||||
|
||||
Reference in New Issue
Block a user