Browse Source

if it's a big number, but still an integer, print it exactly!


git-svn-id: http://svn.code.sf.net/p/cjson/code@18 e3330c51-1366-4df0-8b21-3ccf24e3d50e
Dave Gamble 15 years ago
parent
commit
501ff3b3d0
1 changed files with 3 additions and 2 deletions
  1. 3 2
      cJSON.c

+ 3 - 2
cJSON.c

@@ -121,8 +121,9 @@ static char *print_number(cJSON *item)
 	else
 	{
 		str=(char*)cJSON_malloc(64);	// This is a nice tradeoff.
-		if (fabs(d)<1.0e-6 || fabs(d)>1.0e9)	sprintf(str,"%e",d);
-		else									sprintf(str,"%f",d);
+		if (fabs(floor(d)-d)<=DBL_EPSILON)			sprintf(str,"%.0f",d);
+		else if (fabs(d)<1.0e-6 || fabs(d)>1.0e9)	sprintf(str,"%e",d);
+		else										sprintf(str,"%f",d);
 	}
 	return str;
 }