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的时候会出现精度问题,例如 这儿设置的实体类对象类型是String,默认用到的是StringNumberConverter转换器 2.1.4 版本 public class Strin…...

精通推荐算法31:行为序列建模之ETA — 基于SimHash实现检索索引在线化
1 行为序列建模总体架构 2 SIM模型的不足和为什么需要ETA模型 SIM实现了长周期行为序列的在线建模,其GSU检索单元居功至伟。但不论Hard-search还是Soft-search,都存在如下不足: GSU检索的目标与主模型不一致。Hard-search通过类目属性来筛选…...
Python知识点:如何使用Python进行卫星数据分析
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 如何使用Python进行卫星数据分析 卫星数据分析是地球观测领域的一项关键技术&a…...
Python实现Phong着色模型算法
目录 使用Python实现Phong着色模型算法引言Phong着色模型的基本原理1. 模型组成2. 公式 Phong着色模型的Python实现1. 向量类的实现2. 光源类的实现3. 材质类的实现4. Phong着色器类的实现 整体实现总结 使用Python实现Phong着色模型算法 引言 在计算机图形学中,光…...
异步框架 fastapi -- 连接mysql数据库
文章目录 docker部署mysqlfastapi连接mysql docker部署mysql 拉取mysql镜像 # 查看docker 服务状态 systemctl status docker systemctl start docker # 设置 开机启动 systemctl enable docker# 拉取mysql 镜像 docker search mysql:latest # 不指定版本时,默认…...
Spring 全家桶使用教程 —— 后端开发从入门到精通
Spring 全家桶是 Java 后端开发的利器,提供了从基础开发到复杂微服务架构的一整套解决方案。通过对各个 Spring 组件的掌握,开发者可以快速构建高效、稳定的企业级应用。本文将详细介绍 Spring 全家桶的各个组件,帮助开发者深入理解其核心功能…...

AI动漫转真人终极教程!3步做出爆款内容,音乐推广号变现
从小到大,我们看过的动漫、玩过的游戏有很多很多 但我们会发现里面的角色或者人物都是二次元的 我就会好奇这些动漫人物在现实中会长什么样 而现在,我们通过AI绘画竟然就能还原出来他们现实中的样子 除了动漫角色和游戏人物,古代的画像、…...

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

别再使用[]来获取字典的值了,来尝试一下这些方法
字典 在Python中,字典(Dictionary)是一种非常灵活的数据结构,用于存储键值对(key-value pairs)。每个键都是唯一的,并且与某个值相关联。字典是Python中处理映射关系(即一个键对应一…...

如果你不愿意冒一切风险,就不要成为创业者:如何建立一个年收入 1800 万美元的支付业务
作者:Austin Mac Nab,VizyPay 的 CEO 兼创始人 在创业初期,如果有人告诉我,我需要冒一切风险才能成功,我大概会吓得绕道而行。但事实是,如果你不愿意冒一切风险,就不要成为创业者。本着这个信念…...

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

简站wordpress主题产品多图ACF插件设置方法
此教程仅适用于演示站有产品多图的主题,演示站没有产品多图的主题,就别往下看了,省得浪费时间。 1、给产品添加轮播图 简站wordpress主题有多个产品图的主题,添加产品轮播图的具体方法如下: 1.2、选择产品分类 添加…...
USB设备在Linux系统中的识别和加载过程
文章目录 一、USB设备的插入与检测二、中断处理与设备识别三、驱动程序加载与设备注册四、设备节点创建与权限分配五、设备初始化与通信 在Linux系统中,USB设备的自动识别和加载过程是一个高效且复杂的机制,确保了用户能够无缝地使用这些设备。本文将深入…...
nacos通过@Value动态刷新配置
Value获取最新值 引入jar包: <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.1.RELEASE</version> </dependency>引入配置…...
[研发工具箱] 系列3.机电类常用的分类网站
工具箱系列1里,我们对国家标准馆提供的服务做了一些简介,在研发工作中还有一些非常宝贵的资讯来源,现在尽可能多的列举出一些宝贝网站: 1.文献标准类网站: 我经常会用到3 NTSL国家科技图书文献中心 之前提到的国家标…...

volatile关键字最全原理剖析
介绍 volatile是轻量级的同步机制,volatile可以用来解决可见性和有序性问题,但不保证原子性。 volatile的作用: 保证了不同线程对共享变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是…...
mysql学习教程,从入门到精通,SQL RIGHT JOIN语句(24)
1、SQL RIGHT JOIN语句 RIGHT JOIN(也被称为RIGHT OUTER JOIN)是一种SQL语句,它用于从两个或多个表中根据连接条件返回右表(RIGHT JOIN语句中指定的表)的所有记录,以及左表中匹配的记录。如果左表中的行在…...

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

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

告别熬夜,追求高效写作:芝士AI写作,效率与质量的双重提升
好的工具,真得能够让我们的学习事半功倍,有了芝士AI(paperzz)工具的加持,妈妈再也不用担心我熬夜写论文了 。 芝士AI官网:https://www.paperzz.cn/ 不愧是由985硕博团队开发的AI大模型功软件,…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...