前端Long类型精度丢失

Long类型返回前端,前端接收精度丢失bug 解决我的bug 阅读详情

描述

  • 在后台返回的Long类型的id为长整型:1400467439103381504,但是在前端接收参数造成末尾精度丢失:1400467439103381500

解决

1、在实体类字段上添加注解

@JsonFormat(shape = JsonFormat.Shape.STRING)

在这里插入图片描述

OR

2、全局配置

  • 继承WebMvcConfigurer
	/**
     * 配置返回前端Json
     * @param: builder
     * @return: com.fasterxml.jackson.databind.ObjectMapper
     * @author: HL
     * @date: 2021/12/27 14:17
     */
    @Bean
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();

        // 将Long类型序列化成String类型 防止Long类型造成前端精度丢失
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);

        return objectMapper;
    }
  • 测试:
    在这里插入图片描述

在这里插入图片描述

Long类型数据返回给前端丢失精度问题解决 前几天做项目,遇到了一个小坑。一个插入数据的操作,在后端应用雪花算法生成了数据的id,插入到库中。id为long类型19位,但是当再次回显给前端时,id值变了。前几位都是一样的,只是在后几位中都变成了零。(由于时间太久,没有保留截图) 在网上差了一下原因和解决办法,在此记录一下,希望对大家有帮助。 我们前后端数据传输,会将返回的数据序列化为json字符串,返回给前端,前端应用js进行数据解析,但是19位的字符串id数据转换成long类型时,由于位数太长丢失了精度,会将后几位用零代替,所以前端显示的就是丢. 阅读详情

相关推荐

Long类型的数据传给前端精度丢失

后端的订单号值比如1089713253179727872 传给前端 显示出来是1089713253179727900。拿postman测试接口没有问题,查到的是正确的数据,原来是因为Long类型数据传给前端可能精度丢失,js中的数据类型不能包含所有的java long值。 这个问题真是在前后端连接的夹缝中求生存了,同事跟我说拿返回的数据查不到,我拿postman调后端又完全发现不了问题。话又说回来...

焦玉丽 3300

Long类型参数传到前端精度丢失的解决方案

一、前言 由于公司数据库表的id是利用雪花算法生成的,所以实体类里面定义的数据类型为Long。但是这个数据传到前端时,发生了精度丢失的现象。本文记录了从java后端的角度如何解决这个精度丢失的问题,便于自己后续查阅。 二、问题的描述 前端通过ajax请求后端接口,返回json数据,然后将数据渲染到一个表格中。突然发现表格中id这一列出现了精度丢失的现象,这精度丢失是由前端引起的。 三、解决方案...

Thinkingcao的专栏 3946

别再只盯着YOLOv8了!手把手带你用PaddleDetection的PP-YOLOE+搞定你的第一个检测项目

本文介绍了PP-YOLOE+在目标检测领域的优势与应用实践,对比YOLOv8展示其在精度、速度和部署便利性上的突破。通过详细的代码示例和实战教程,帮助开发者快速上手PaddleDetection工具链,实现产业级目标检测项目,提升开发效率。

weixin_42701915的博客 184

Long类型字段前端获取精度丢失的解决方案

使用Jackson的@JsonSerialize注解解决Long类型字段前端获取精度丢失

huangjhai的博客 4421

Altium Designer 16安装教程(Windows11、小白教程)

Altium Designer 16在Windows11中的超详细安装教程

qq_47003770的博客 1万+

实战指南:如何优雅解决SpringBoot3与Mybatis-Plus的版本兼容性问题

本文深入解析SpringBoot3与Mybatis-Plus的版本兼容性问题,提供实战解决方案。通过Maven依赖排除策略、Gradle配置方案及自动配置覆盖策略,有效解决包冲突和初始化顺序问题,确保项目平稳升级。适用于开发者快速解决SpringBoot3与Mybatis-Plus的集成难题。

weixin_28432777的博客 596

为什么阿里巴巴Java开发手册中强制要求超大整数禁止使用Long类型返回?

在阅读《阿里巴巴Java开发手册》时,发现有一条关于前后端超大整数返回的规约,具体内容如下:这个问题在之前和前端联调的时候发生过,发现根据脚本 id 去审批的时候,状态没有变化,后来和前...

武培轩 1672

保姆级教程:用DaVinci Configurator & Developer从零搭建AUTOSAR OS(TC2xx三核实战)

本文提供了一份详细的AUTOSAR OS配置指南,使用DaVinci Configurator和Developer工具从零开始搭建Infineon TC2xx三核系统。涵盖多核配置协同逻辑、版本兼容性陷阱及验证错误的解决方案,帮助开发者在3小时内构建可运行的多核OS框架。

weixin_33940469的博客 313

后端传long类型数据到前端精度丢失问题

这是因为在 JavaScript 中,数字类型默认会被转换为双精度浮点数,而双精度浮点数的精度有限,只能精确表示 2 的 53 次方以内(即 Number.MAX_SAFE_INTEGER,约为 9 x 10^15)的整数

weixin_58724261的博客 6615

别再乱装了!Win10下NVIDIA显卡驱动、CUDA 11.0和cuDNN 8.0.5保姆级配置指南(含版本匹配避坑)

本文提供Win10下NVIDIA显卡驱动、CUDA 11.0和cuDNN 8.0.5的保姆级配置指南,详细解析版本匹配逻辑与安装步骤。从驱动选择到环境变量配置,再到框架测试,手把手教你避开常见坑点,确保深度学习环境一次配置成功。特别强调版本匹配的重要性,帮助开发者高效搭建GPU开发环境。

weixin_30600197的博客 307

VIVADO中的IP核在MATLAB中仿真

VIVADO中的IP核在MATLAB中仿真项目简述VIVADO建立FFT IP核MATLAB调用FFT IP核 项目简述 我们都会用MATLAB进行算法验证,但是经常会发现如果VIVADO中调用了IP核,那么最终会发现VIVADO与MATLAB之间的数据不可以统一的对应起来。那么,MATLAB验证的效果就会大大下降,那么可不可以想办法将VIVADO中的IP核封装成一个函数在MATLAB中调用呢?答案是可以的。这篇博客主要以FFT的IP核为例讲解封装成一个函数并且成功在MATLAB中调用。 本次实验所使用的软

zhangningning1996的博客 6989

Long类型后端到前端精度丢失问题

在后端开发中处理Long类型数据时,注意 JavaScript 的精度限制十分重要。通过配置 Jackson 的,可以让所有Long类型字段序列化为字符串,从而避免精度丢失的问题。Spring Boot 的自动化配置特性让我们无需手动调用,就能在全局范围内应用此配置,使得后端传递到前端的数据在大数值时也能准确无误。

embelfe_segge的博客 1155

低功耗设计-Power Switch

power gating与power switch cell

m0_61544122的博客 1万+

js long类型精度丢失_后端Long类型传到前端精度丢失的正确解决方式

原因:前端js对Long类型支持的精度不够,导致后端使用的Long传到前端丢失精度,比如现在分布式id生成算法“雪花算法”在使用中就会出现问题。解决方式:1、后端的Long类型的id转用String存储,不推荐,失去了其Long类型本身的意义。2、在Long类型字段上使用注解标明序列化方式,代码量不大的情况可以考虑@JsonSerialize(using = ToStringSerializer....

weixin_30959723的博客 4728

使用Prophet进行时间序列预测

Prophet是Facebook开发的开源时间序列预测工具,用于处理时间序列数据的建模和预测。它建立在统计模型之上,适用于多种时间序列预测问题,具有易用性和灵活性。能够处理缺失值和异常值支持对节假日和季节性的建模可以灵活地添加自定义的季节性成分自动检测变化点提供了直观的可视化工具这个简短的教程为您提供了使用Prophet进行时间序列预测的基本步骤和一些重要的概念。您可以通过阅读Prophet官方文档和其他在线资源来进一步深入学习和了解更多细节。

Mrrunsen的博客 480

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Long类型返回前端精度丢失

如果使用的是Jackson,它有个配置参数 WRITE_NUMBERS_AS_STRINGS,可以强制将所有数字全部转成字符串输出,使用方法很简单,只需要配置参数即可:spring.jackson.generator.write_numbers_as_strings=true,这种方式的优点是使用方便,不需要调整代码;,这种只适用于这个对象只在这个方法中使用了,比较局限。(2)如果这个对象在很多地方都用到了,可以在序列化的时候,将 Long 类型转换成 String 类型。为什么会发生这样的情况呢?

weixin_44823875的博客 3677

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

解决后端Long类型传递到前端精度丢失问题

当后台有Long类型数据传递到前台时精度会丢失,比如一些自动生成的Id,特别长 前端数字丢失精度的原因 对于前后台传参Long类型64位而言,当前端超过53位后会丢失精度,超过的部分会以00的形式展示. 网上的解决方法是在对应Long类型属性加上注解 @JsonSerialize(using = ToStringSerializer.class) private Long orderId; ...

qq_40788998的博客 2137

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

js long类型精度丢失_前端获取Long类型精度丢失解决办法

数据设计使用bigint 类型作为主键,Java后台使用Long 类型进行接收。json输出到前端显示时发现精度丢失了,查看json数据是没有问题的。后经查询问题原因如下:1、javascript 的 Number 类型最大长度是16位;最大整数是 Math.pow(2, 53),十进制即 9007199254740992,如果超过这个值,那么js会出现不精确的问题。这个值为16位。2、mysql...

weixin_39622760的博客 1243

【JAVA】Long类型返回到前端,精度丢失

【代码】【JAVA】Long类型返回到前端,精度丢失。

weixin_47375144的博客 2096

js long类型精度丢失_后端传Long类型至前端js会出现精度丢失问题

今天开发遇到个问题,Java后端的Long类型数据,传到前端会出现精度丢失,如:164379764419858435,前端会变成164379764419858430。在浏览器中做测试可知,这就是一个精度丢失的问题。解决思路是:后台传到前台时,Long类型数据,转为String类型。1. 可以直接操作传回的对象数据,toString()该long类型数据。2. 如果使用Jackson注解,我们也可以...

weixin_39606911的博客 464

前端接收long类型精度丢失

很坑爹 ™ //1.需要导入对应的包 <dependency> <groupId>io.cucumber</groupId> <artifactId>datatable-dependencies</artifactId> <version>RE...

weixin_39450681的博客 2739

后端Long类型传到前端精度丢失的问题

后端Long类型传到前端精度丢失的问题

weixin_49203377的博客 1302

前端js传入Long类型精度丢失解决办法

在进行业务开发的 时候发现更新数据库中的一条数据没有成功,查看SQL日志发现SQL正常执行无错误信息,但是受影响行数为0,但是数据是从前端传过来的 ,一定是有这条数据存在的,那么为什么会有0条受影响呢?我们去数据库中查找id为1597786380514103300的这条数据时,发现确实没有这条数据,然后我们又根据这条数据的其他信息找到了一条数据,发现前端发送过来的id最后两位与数据不一致。通过两个id的对比,我们大致猜测是id从后端到前端展示的某个环节中一定发生了让数据丢失精度的问题。

金蒂 3507

js long类型精度丢失_前端Long类型数据发生精度丢失问题

问题用户在使用thub产品时发现展示的执行结果中,Long类型数据发生精度丢失问题。实际值: 588208228525821697前端显示 588208228525821700排查发现后端返回数据数据是正确的,在前端显示出错了。原因参考文章 https://blog.youkuaiyun.com/u010028869/article/details/86563382js使用双精度存储方式,因此对超长的整数...

weixin_39608301的博客 1316

后端Long类型传给前端显示丢失精度

目录 问题描述 测试第一步 测试第二步 原因 解决 问题描述 后端服务controller传给前端Long类型的字段,出现丢失精度问题。 原数据18位,例如:157276510349800005 private Long customerId; 传给前端,页面显示为:157276510349800000 测试第一步 在本地测试,Long类型在本地输出正常,可知后端传参数正常 public static void main(String[] args) { ..

zhangm2020的博客 1038
上一篇: SpringCloud - Token校验失效
下一篇: MySQL基础笔记(一)
hanlin-hl
博客等级 码龄8年 3粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanlin-hl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值