1.背景
1
| 保险公司年金产品的费率,要编写跑费率的代码,并写到excel里面,此时就出现了jsonobject的精度损失问题。
|
2.测试代码如下
1 2 3 4 5 6 7 8
| public static void main(String[] args) throws IOException { String s = "{\r\n" + " \"rate\":18232343112.989023\r\n" + "}"; JSONObject t = JSONObject.fromObject(s); System.out.println("net.lib.json:"+Math.round(t.getDouble("rate"))); }
|
1
| net.lib.json:18232342500
|
3.解决方案
1
| 使用阿里的fastjson替换当前的net.lib.json,测试代码如下:
|
1 2 3 4 5 6 7 8 9 10
| public static void main(String[] args) throws IOException { String s = "{\r\n" + " \"rate\":18232343112.989023\r\n" + "}"; JSONObject t = JSONObject.fromObject(s); System.out.println("net.lib.json:"+Math.round(t.getDouble("rate"))); com.alibaba.fastjson.JSONObject at = JSON.parseObject(s); System.out.println("fastjson:"+Math.round(at.getDoubleValue("rate"))); }
|
1 2
| net.lib.json:18232342500 fastjson:18232343113
|
*************感谢您的阅读*************