From e3ba369ae4dd239b93c2aa812f0eb8e1b227aa42 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 17 Feb 2020 19:38:14 -0800 Subject: [PATCH] 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. --- src/m_misc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/m_misc.c b/src/m_misc.c index 3dfeef81e..d762712b6 100644 --- a/src/m_misc.c +++ b/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) */ int i; /* I know I said it's the default, but just in case... */ - sprintf(dig, "%.6g", modf(f, &f)); - if (dig[0]) + sprintf(dig, "%.6f", fabs(modf(f, &f))); + /* 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'; return &dig[1];/* skip the 0 */ } - else - return ""; }