From e3ba369ae4dd239b93c2aa812f0eb8e1b227aa42 Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
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 3dfeef81ec..d762712b64 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 "";
 }
-- 
GitLab