Youngjae
Youngjae

Reputation: 25070

org.json.JSONObject.getLong gives imprecise result

Wrong precision in Long conversion

In android, as we can see attached figure, the json that I received from server is "id=-7051563524465472446" but the code jsonObject.getLong("id") gives -7051563524465472512.

I can see every getLong conversion has imprecise result(or lose precision?) in last 4 digits. Is there anything that I missed?

My settings: java 1.6.0_41, Android 4.1.2, IntelliJ 12 IDE.

Upvotes: 2

Views: 2085

Answers (3)

Prateek Jain
Prateek Jain

Reputation: 11

I too faced this problem very recently.. Solved it by using the code:

Long.valueOf(jarray.getString((index)))

Upvotes: 0

Youngjae
Youngjae

Reputation: 25070

Long.parseLong(jsonObject.getString("id")) gives precise result.

Upvotes: 5

Mike Q
Mike Q

Reputation: 23229

This would suggest the code for getLong() is doing some dubious conversion, possibly by using double.

This looks to be the case based on this issue report. Looks to have been fixed in a later version.

Upvotes: 1

Related Questions