Java 在将JSON字符串转换为JSON数组的过程中,数字被舍入

Java 在将JSON字符串转换为JSON数组的过程中,数字被舍入,java,json,jsonserializer,json-lib,Java,Json,Jsonserializer,Json Lib,当我将JSON字符串转换为JSON数组时,小数部分被舍入。在下面的示例中,给出的值为33648.545,输出为33648.547。使用的库是“json-lib-2.4-jdk15.jar”。任何人都能帮助解决这个案子 import net.sf.json.JSONArray; import net.sf.json.JSONSerializer; public class TestCode{ public static void main(String[] args){ String js

当我将JSON字符串转换为JSON数组时,小数部分被舍入。在下面的示例中,给出的值为33648.545,输出为33648.547。使用的库是“json-lib-2.4-jdk15.jar”。任何人都能帮助解决这个案子

import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;

public class TestCode{

public static void main(String[] args){
  String jsonStr2 = "[{\"amount\":33648.545}]";
  JSONArray jArrayStr = (JSONArray) JSONSerializer.toJSON(jsonStr2);
  System.out.println(jArrayStr);
}
}

这可能是一个精度问题,即如果将该数字解析为
浮点值
,则无法表示准确值。我不知道您正在使用的库,所以这只是一个猜测,但请尝试
System.out.println(33648.545f)
和您应该看到相同的输出,即
33648.547
@Thomas,是的,您是对的。如果我将值传递为,
String jsonStr2=“[{\“amount\”:33648.545d}]”它将给出正确的输出。i、 e.33648.545。谢谢。将JSON解析方法从JSONUTIL更改为JACKSON,以防止BigDecimal错误舍入,它成功了。已使用
ObjectMapper.readValue