发布网友 发布时间:2023-04-25 06:40
共1个回答
热心网友 时间:2023-10-14 19:03
以上方法可以解决js 与 controller、前台controller 与 后台controller 之间大数字传输精度丢失问题。缺点是每个用到大数字的实体都需要进行配置。
本文所有方法只能解决传输过程、js 接收数据精度丢失问题。不能解决前台Js大数字运算精度丢失问题,大数字运算最好放到Java中。
方法一:解决反序列化时,BigDecimal类型精度缺失
PmServiceServiceApplication.java 增加如下配置
此方法可以解决前台controller 到后台controller ,反序列化时数字精度丢失问题,也可以修改其他数据类型的格式。
方法二:解决Js json字符串转换为js对象时精度缺失
用正则匹配json中的12位以上数字,替换为字符串。
以当前项目为例:修改前台 ajaxdatawrap.js 中convertJsonToDC方法,用正则表达式匹配每个大于12位的数字,替换为字符串。
此方法可以解决js接收到controller数据之后,转为js对象时,精度丢失问题(列表页面中,前台controller所接收大数字字段精度已经丢失,与js无关)。
缺点:不准确(小概率,正则表达式有可能替换掉不是数字但是符合条件的数据)