[alibaba/easyexcel]不创建对象的读, 针对小数点后30位内的读会有精度丢失, 只能读取10个精度

2023-12-14 578 views
2
异常代码
   @Slf4j
public class NoModelDataListener extends AnalysisEventListener<Map<Integer, String>> {
    private List<Map<Integer, String>> cachedDataList = Lists.newArrayList();

    @Override
    public void invoke(Map<Integer, String> data, AnalysisContext context) {
        //log.info("解析到一条数据:{}", JSON.toJSONString(data));
        cachedDataList.add(data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // do nothing
        /*saveData();
        log.info("所有数据解析完成!");*/
    }

    public List<Map<Integer, String>> getCachedDataList() {
        return cachedDataList;
    }

    public void setCachedDataList(List<Map<Integer, String>> cachedDataList) {
        this.cachedDataList = cachedDataList;
    }
}
异常提示

image

问题描述

不创建对象的读, 精度丢失到十位, 怎么设置可以30位内不丢失精度

回答

3

您好,请把小数类型转换为BigDecimal。 祝您生活愉快,工作顺利。

9

使用Map<Integer, String>是做不到的,试试Map<Integer, ReadCellData<?>>,读取的时候还要设置useDefaultListener(Boolean.FALSE)