Fix M_Ftrim
- Use '%f' instead of '%g' to avoid going scientific. Should also fix some compiler warnings. - The trailing zero trimming code is now useful. It started on the terminating byte before and wouldn't have done anything with '%g' anyway. - Use the absolute fractional value to avoid a sign.
This commit is contained in:
parent
9bd9e667c5
commit
e3ba369ae4
13
src/m_misc.c
13
src/m_misc.c
|
@ -2618,14 +2618,15 @@ const char * M_Ftrim (double f)
|
||||||
static char dig[9];/* "0." + 6 digits (6 is printf's default) */
|
static char dig[9];/* "0." + 6 digits (6 is printf's default) */
|
||||||
int i;
|
int i;
|
||||||
/* I know I said it's the default, but just in case... */
|
/* I know I said it's the default, but just in case... */
|
||||||
sprintf(dig, "%.6g", modf(f, &f));
|
sprintf(dig, "%.6f", fabs(modf(f, &f)));
|
||||||
if (dig[0])
|
/* trim trailing zeroes */
|
||||||
|
for (i = strlen(dig)-1; dig[i] == '0'; --i)
|
||||||
|
;
|
||||||
|
if (dig[i] == '.')/* :NOTHING: */
|
||||||
|
return "";
|
||||||
|
else
|
||||||
{
|
{
|
||||||
for (i = strlen(dig); dig[i] == '0'; --i)
|
|
||||||
;
|
|
||||||
dig[i + 1] = '\0';
|
dig[i + 1] = '\0';
|
||||||
return &dig[1];/* skip the 0 */
|
return &dig[1];/* skip the 0 */
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue