项目使用json-lib-2.4-jdk15.jar进行json<->pojo之间转换,今天发现一个悲剧问题:
结果发现第一个数值转换后为670526.3,精度出现问题,网上搜索一番,没找到原因,蛮试试降低版本json-lib-2.3-jdk15.jar,竟然正确,看来这小版本变动大有文章,反编译看源码,先看看2.4的
JSONObject.java
JSONTokener.java
String jsonString = "[{\"amount\":670526.32},{\"amount\":29473.68}]";
JSONObject jsonObject = JSONObject.fromObject(jsonString);
结果发现第一个数值转换后为670526.3,精度出现问题,网上搜索一番,没找到原因,蛮试试降低版本json-lib-2.3-jdk15.jar,竟然正确,看来这小版本变动大有文章,反编译看源码,先看看2.4的
JSONObject.java
private static JSONObject _fromJSONTokener(JSONTokener tokener, JsonConfig jsonConfig)
{
......
v = tokener.nextValue(jsonConfig);
......
}
JSONTokener.java
public Object nextValue(JsonConfig jsonConfig)
{
......
if (((b >= '0') && (b <= '9')) || ((((b == '.') || (b