Explorar o código

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 %!s(int64=15) %!d(string=hai) anos
pai
achega
501ff3b3d0
Modificáronse 1 ficheiros con 3 adicións e 2 borrados
  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;
 }