summaryrefslogtreecommitdiff
path: root/json_object.c
diff options
context:
space:
mode:
authorJan Gerhards <jgerhards@adiscon.com>2016-11-27 11:47:00 +0100
committerJan Gerhards <jgerhards@adiscon.com>2016-11-27 11:47:00 +0100
commitca7a1973e25f131523b3923a32199e90f653161c (patch)
treeebad39b63796c3211b4edd0c10742a1c1bc7075c /json_object.c
parentd050f1e622a8874d3ecc05869b7a85466fb4befc (diff)
downloadjson-c-ca7a1973e25f131523b3923a32199e90f653161c.tar.gz
bugfix: floating point representaion without fractional part
closes https://github.com/json-c/json-c/issues/278
Diffstat (limited to 'json_object.c')
-rw-r--r--json_object.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/json_object.c b/json_object.c
index c65941e..139d857 100644
--- a/json_object.c
+++ b/json_object.c
@@ -693,6 +693,7 @@ static int json_object_double_to_json_string_format(struct json_object* jso,
{
char buf[128], *p, *q;
int size;
+ double dummy; /* needed for modf() */
/* Although JSON RFC does not support
NaN or Infinity as numeric values
ECMA 262 section 9.8.1 defines
@@ -706,7 +707,9 @@ static int json_object_double_to_json_string_format(struct json_object* jso,
size = snprintf(buf, sizeof(buf), "-Infinity");
else
size = snprintf(buf, sizeof(buf),
- format ? format : "%.17g", jso->o.c_double);
+ format ? format :
+ (modf(jso->o.c_double, &dummy) == 0) ? "%.17g.0" : "%.17g",
+ jso->o.c_double);
p = strchr(buf, ',');
if (p) {