Ensure significand remains an integer in Python3 json parser
authorTerry Wilson <twilson@redhat.com>
Wed, 8 Jun 2016 13:55:13 +0000 (08:55 -0500)
committerBen Pfaff <blp@ovn.org>
Wed, 8 Jun 2016 18:35:03 +0000 (11:35 -0700)
commit2c362f17d6f81b7602ac94abb7980fa1e6eb9cee
treecc76001f80762bab3018974549ece58f82e451b2
parent2f22698ff1c88f8eb911711b0f98757f0660ef95
Ensure significand remains an integer in Python3 json parser

The / operation in Python 2 is "floor division" for int/long types
while in Python 3 is "true division". This means that the
significand can become a float with the existing code in Python 3.
This, in turn, can result in a parse of something like [1.10e1]
returning 11 in Python 2 and 11.0 in Python 3. Switching to the
// operator resolves this difference.

The JSON tests do not catch this difference because the built-in
serializer prints floats with the %.15g format which will convert
floats with no fractional part to an integer representation.

Signed-off-by: Terry Wilson <twilson@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
python/ovs/json.py