当前位置: 首页 > news >正文

easyexcel常见问题分析

文章目录

  • 一、读取数字多了很多小数位的精度问题


一、读取数字多了很多小数位的精度问题

浮点型转成BigDecimal的时候会出现精度问题,例如
在这里插入图片描述
这儿设置的实体类对象类型是String,默认用到的是StringNumberConverter转换器
2.1.4 版本

public class StringNumberConverter implements Converter<String> {@Overridepublic Class supportJavaTypeKey() {return String.class;}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.NUMBER;}@Overridepublic String convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) {// If there are "DateTimeFormat", read as dateif (contentProperty != null && contentProperty.getDateTimeFormatProperty() != null) {return DateUtils.format(DateUtil.getJavaDate(cellData.getNumberValue().doubleValue(),contentProperty.getDateTimeFormatProperty().getUse1904windowing(), null),contentProperty.getDateTimeFormatProperty().getFormat());}// If there are "NumberFormat", read as numberif (contentProperty != null && contentProperty.getNumberFormatProperty() != null) {return NumberUtils.format(cellData.getNumberValue(), contentProperty);}// Excel defines formattingif (cellData.getDataFormat() != null) {if (DateUtil.isADateFormat(cellData.getDataFormat(), cellData.getDataFormatString())) {return DateUtils.format(DateUtil.getJavaDate(cellData.getNumberValue().doubleValue(),globalConfiguration.getUse1904windowing(), null));} else {// 直接返回NumberValue,对弈的类型为BigDecimal,因为BigDecimal由double转换而来// 出现了精度读取的问题,所以此时直接读取NumberValue,精度不准确的时候多出很多小数点// 这种情况不是必现的,613999.06是个例子return NumberUtils.format(cellData.getNumberValue(), contentProperty);}}// Default conversion numberreturn NumberUtils.format(cellData.getNumberValue(), contentProperty);}@Overridepublic CellData convertToExcelData(String value, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) {return new CellData(new BigDecimal(value));}
}

2.2.8 版本

public class StringNumberConverter implements Converter<String> {@Overridepublic Class supportJavaTypeKey() {return String.class;}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.NUMBER;}@Overridepublic String convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) {// If there are "DateTimeFormat", read as dateif (contentProperty != null && contentProperty.getDateTimeFormatProperty() != null) {return DateUtils.format(DateUtil.getJavaDate(cellData.getNumberValue().doubleValue(),contentProperty.getDateTimeFormatProperty().getUse1904windowing(), null),contentProperty.getDateTimeFormatProperty().getFormat());}// If there are "NumberFormat", read as numberif (contentProperty != null && contentProperty.getNumberFormatProperty() != null) {return NumberUtils.format(cellData.getNumberValue(), contentProperty);}// Excel defines formattingif (cellData.getDataFormat() != null && !StringUtils.isEmpty(cellData.getDataFormatString())) {// 直接返回doubleValue,对弈的类型为double,转成String不会出现精度问题return NumberDataFormatterUtils.format(cellData.getNumberValue().doubleValue(), cellData.getDataFormat(),cellData.getDataFormatString(), globalConfiguration);}// Default conversion numberreturn NumberUtils.format(cellData.getNumberValue(), contentProperty);}@Overridepublic CellData convertToExcelData(String value, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) {return new CellData(new BigDecimal(value));}
}

如果无法升级版本,可以重写转换器StringNumberConverter ,解决读取不准确的问题

相关文章:

easyexcel常见问题分析

文章目录 一、读取数字多了很多小数位的精度问题 一、读取数字多了很多小数位的精度问题 浮点型转成BigDecimal的时候会出现精度问题&#xff0c;例如 这儿设置的实体类对象类型是String&#xff0c;默认用到的是StringNumberConverter转换器 2.1.4 版本 public class Strin…...

精通推荐算法31:行为序列建模之ETA — 基于SimHash实现检索索引在线化

1 行为序列建模总体架构 2 SIM模型的不足和为什么需要ETA模型 SIM实现了长周期行为序列的在线建模&#xff0c;其GSU检索单元居功至伟。但不论Hard-search还是Soft-search&#xff0c;都存在如下不足&#xff1a; GSU检索的目标与主模型不一致。Hard-search通过类目属性来筛选…...

Python知识点:如何使用Python进行卫星数据分析

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 如何使用Python进行卫星数据分析 卫星数据分析是地球观测领域的一项关键技术&a…...

Python实现Phong着色模型算法

目录 使用Python实现Phong着色模型算法引言Phong着色模型的基本原理1. 模型组成2. 公式 Phong着色模型的Python实现1. 向量类的实现2. 光源类的实现3. 材质类的实现4. Phong着色器类的实现 整体实现总结 使用Python实现Phong着色模型算法 引言 在计算机图形学中&#xff0c;光…...

异步框架 fastapi -- 连接mysql数据库

文章目录 docker部署mysqlfastapi连接mysql docker部署mysql 拉取mysql镜像 # 查看docker 服务状态 systemctl status docker systemctl start docker # 设置 开机启动 systemctl enable docker# 拉取mysql 镜像 docker search mysql:latest # 不指定版本时&#xff0c;默认…...

Spring 全家桶使用教程 —— 后端开发从入门到精通

Spring 全家桶是 Java 后端开发的利器&#xff0c;提供了从基础开发到复杂微服务架构的一整套解决方案。通过对各个 Spring 组件的掌握&#xff0c;开发者可以快速构建高效、稳定的企业级应用。本文将详细介绍 Spring 全家桶的各个组件&#xff0c;帮助开发者深入理解其核心功能…...

AI动漫转真人终极教程!3步做出爆款内容,音乐推广号变现

从小到大&#xff0c;我们看过的动漫、玩过的游戏有很多很多 但我们会发现里面的角色或者人物都是二次元的 我就会好奇这些动漫人物在现实中会长什么样 而现在&#xff0c;我们通过AI绘画竟然就能还原出来他们现实中的样子 除了动漫角色和游戏人物&#xff0c;古代的画像、…...

vue2 vconsole有助于移动端开发页面调试

项目场景&#xff1a; pc项目开发中&#xff0c;有浏览器自带的调试工具。但在移动端&#xff0c;就需要自己搭建调试工具了。vconsole一种非常方便的前端调试依赖库&#xff0c;有助于我们在移动端开发式进行调试&#xff0c;快速排查移动端问题。 搭建步骤 1、安装依赖库。…...

别再使用[]来获取字典的值了,来尝试一下这些方法

字典 在Python中&#xff0c;字典&#xff08;Dictionary&#xff09;是一种非常灵活的数据结构&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。每个键都是唯一的&#xff0c;并且与某个值相关联。字典是Python中处理映射关系&#xff08;即一个键对应一…...

如果你不愿意冒一切风险,就不要成为创业者:如何建立一个年收入 1800 万美元的支付业务

作者&#xff1a;Austin Mac Nab&#xff0c;VizyPay 的 CEO 兼创始人 在创业初期&#xff0c;如果有人告诉我&#xff0c;我需要冒一切风险才能成功&#xff0c;我大概会吓得绕道而行。但事实是&#xff0c;如果你不愿意冒一切风险&#xff0c;就不要成为创业者。本着这个信念…...

4.浮点数二分【求数的平方根】

模板 public class BinarySearch {// 检查x是否满足某种性质public static boolean check(double x) {// 实现具体的检查逻辑return false; // 这里仅为示例&#xff0c;实际根据需求修改}public static double bsearch_3(double l, double r) {final double eps 1e-6; // …...

简站wordpress主题产品多图ACF插件设置方法

此教程仅适用于演示站有产品多图的主题&#xff0c;演示站没有产品多图的主题&#xff0c;就别往下看了&#xff0c;省得浪费时间。 1、给产品添加轮播图 简站wordpress主题有多个产品图的主题&#xff0c;添加产品轮播图的具体方法如下&#xff1a; 1.2、选择产品分类 添加…...

USB设备在Linux系统中的识别和加载过程

文章目录 一、USB设备的插入与检测二、中断处理与设备识别三、驱动程序加载与设备注册四、设备节点创建与权限分配五、设备初始化与通信 在Linux系统中&#xff0c;USB设备的自动识别和加载过程是一个高效且复杂的机制&#xff0c;确保了用户能够无缝地使用这些设备。本文将深入…...

nacos通过@Value动态刷新配置

Value获取最新值 引入jar包&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.1.RELEASE</version> </dependency>引入配置…...

[研发工具箱] 系列3.机电类常用的分类网站

工具箱系列1里&#xff0c;我们对国家标准馆提供的服务做了一些简介&#xff0c;在研发工作中还有一些非常宝贵的资讯来源&#xff0c;现在尽可能多的列举出一些宝贝网站&#xff1a; 1.文献标准类网站&#xff1a; 我经常会用到3 NTSL国家科技图书文献中心 之前提到的国家标…...

volatile关键字最全原理剖析

介绍 volatile是轻量级的同步机制&#xff0c;volatile可以用来解决可见性和有序性问题&#xff0c;但不保证原子性。 volatile的作用&#xff1a; 保证了不同线程对共享变量进行操作时的可见性&#xff0c;即一个线程修改了某个变量的值&#xff0c;这新值对其他线程来说是…...

mysql学习教程,从入门到精通,SQL RIGHT JOIN语句(24)

1、SQL RIGHT JOIN语句 RIGHT JOIN&#xff08;也被称为RIGHT OUTER JOIN&#xff09;是一种SQL语句&#xff0c;它用于从两个或多个表中根据连接条件返回右表&#xff08;RIGHT JOIN语句中指定的表&#xff09;的所有记录&#xff0c;以及左表中匹配的记录。如果左表中的行在…...

LeaferJS 动画、状态、过渡、游戏框架

LeaferJS 现阶段依然专注于绘图、交互和图形编辑场景。我们引入游戏场景&#xff0c;只是希望让 LeaferJS 被更多有需要的人看到&#xff0c;以充分发挥它的价值 LeaferJS 为你带来了全新的游戏、动画、状态和过渡功能&#xff0c;助你实现那些年少时的游戏梦想。我们引入了丰富…...

14年408-计算机网络

第一题&#xff1a; 解析&#xff1a;OSI体系结构 OSI由下至上依次是&#xff1a;物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题&#xff1a; 解析&#xff1a;数据链路层-交换机的自学习和帧转发 主机a1向交换…...

告别熬夜,追求高效写作:芝士AI写作,效率与质量的双重提升

好的工具&#xff0c;真得能够让我们的学习事半功倍&#xff0c;有了芝士AI&#xff08;paperzz&#xff09;工具的加持&#xff0c;妈妈再也不用担心我熬夜写论文了 。 芝士AI官网&#xff1a;https://www.paperzz.cn/ 不愧是由985硕博团队开发的AI大模型功软件&#xff0c;…...

广东公考机构全景测评:粉笔凭极致性价比与本土教研实力领跑

随着2026年广东省考备考热潮的持续升温&#xff0c;选择一家靠谱的培训机构成为广大考生关注的焦点。在广东这片公考竞争激烈的热土上&#xff0c;除了粉笔、华图和中公三大巨头&#xff0c;以笨鸟教育、及第林教育为代表的本土精品机构也凭借极强的地域针对性异军突起。本次测…...

技术团队的“信息透明”策略:报喜也报忧,反而更受信任

在软件测试领域&#xff0c;我们每天都在与“不确定性”打交道。一个隐藏的边界值、一次偶发的并发冲突、一个在特定机型上才能复现的诡异Bug&#xff0c;都足以让看似稳固的系统瞬间变得脆弱。然而&#xff0c;比起代码中的不确定性&#xff0c;更让测试团队感到无力的&#x…...

Obsidian数据迁移终极指南:如何将10+平台笔记一键导入知识库

Obsidian数据迁移终极指南&#xff1a;如何将10平台笔记一键导入知识库 【免费下载链接】obsidian-importer Obsidian Importer lets you import notes from other apps and file formats into your Obsidian vault. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i…...

本地包管理器指南:实现开发环境隔离与依赖管理的工程实践

1. 项目概述&#xff1a;一个为开发者而生的本地包管理器指南如果你是一名开发者&#xff0c;尤其是经常在本地环境折腾各种工具、依赖和项目配置的开发者&#xff0c;那么“包管理器”这个词对你来说一定不陌生。无论是 Node.js 的 npm/yarn/pnpm&#xff0c;Python 的 pip/co…...

Cursor AI 规则引擎:自动化编码规范与项目约束实践指南

1. 项目概述&#xff1a;一个为 Cursor 编辑器量身定制的规则引擎如果你和我一样&#xff0c;深度依赖 Cursor 这款 AI 驱动的代码编辑器&#xff0c;那你一定经历过这样的时刻&#xff1a;面对 AI 生成的代码&#xff0c;既惊叹于它的效率&#xff0c;又时常为它不遵守团队规范…...

会议录播堆积如山?用这款AI工具3分钟自动生成会议纪要

一个很普遍的职场痛点&#xff1a;每周开3-4个会&#xff0c;录播存了一堆&#xff0c;但从来没有整理过。 不是不想整理&#xff0c;是整理一小时的会议录像至少要40分钟——要从头拉一遍、要标重点、要区分谁说了什么、要提炼行动项。忙的时候根本没时间干这个。 结果就是&…...

AI代码助手Cursor与Django全栈开发:十倍速构建Web应用实战

1. 项目概述&#xff1a;当AI代码助手遇上Django全栈开发如果你是一名独立开发者、初创团队的技术负责人&#xff0c;或者正在学习全栈开发&#xff0c;那么你一定对如何高效构建一个现代化的Web应用感到头疼。从环境配置、数据库设计、API接口开发到前端页面渲染&#xff0c;每…...

2026 最新 6 款漏洞扫描工具!一篇全覆盖

渗透测试收集信息完成后&#xff0c;就要根据所收集的信息&#xff0c;扫描目标站点可能存在的漏洞了&#xff0c;包括我们之前提到过的如&#xff1a;SQL注入漏洞、跨站脚本漏洞、文件上传漏洞、文件包含漏洞及命令执行漏洞等&#xff0c;通过这些已知的漏洞&#xff0c;来寻找…...

植物大战僵尸杂交版手机版最新版v3.16.1安卓2026最新下载分享

作为长期沉迷植物大战僵尸改版的老玩家&#xff0c;我近期完整体验了杂交版全新V3.16版本&#xff0c;从植物、关卡到平台适配&#xff0c;逐一实测验证。 整体来说&#xff0c;这是一次诚意满满的更新——既有新鲜玩法创新&#xff0c;又兼顾不同玩家需求。 下载链接&#x…...

好的、坏的、丑陋的:神经网络的记忆

原文&#xff1a;towardsdatascience.com/the-good-the-bad-an-ugly-memory-for-a-neural-network-bac1f79e8dfd |人工智能|记忆|神经网络|学习| https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1e1ee7fbb30819e6f820f4d17dcd3b74.png 由…...