diff options
author | Jan Gerhards <jgerhards@adiscon.com> | 2016-11-27 11:47:00 +0100 |
---|---|---|
committer | Jan Gerhards <jgerhards@adiscon.com> | 2016-11-27 11:47:00 +0100 |
commit | ca7a1973e25f131523b3923a32199e90f653161c (patch) | |
tree | ebad39b63796c3211b4edd0c10742a1c1bc7075c /json_object.c | |
parent | d050f1e622a8874d3ecc05869b7a85466fb4befc (diff) | |
download | json-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.c | 5 |
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) { |