前端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

Python新手必看:5分钟搞定睿尔曼机械臂基础控制(附代码示例)

本文为Python新手提供了快速上手睿尔曼机械臂基础控制的实战指南。通过详细的步骤讲解和代码示例,介绍了从环境搭建、网络配置、SDK安装到建立连接、执行关节运动(movej)、直线运动(movel)等核心控制指令的全过程,帮助零基础开发者快速实现机械臂的基础操控。

hp777的博客 328

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

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

huangjhai的博客 4421

别再纠结了!实测罗技Flow、对拷线、微软Mouse without Borders,我的最终选择是...

本文通过实测对比罗技Flow、对拷线和微软Mouse without Borders等多设备控制方案,详细分析了各自的优缺点及适用场景。作者最终选择了对拷线与罗技键鼠的组合方案,为专业用户提供了稳定可靠的多设备协同办公解决方案,特别适合需要频繁传输大文件和跨设备操作的用户。

weixin_33696106的博客 405

国密套件ECC-SM2-SM4-CBC-SM3和ECDHE-SM2-WITH-SM4-SM3

双方交换各自的公钥,最后A计算点(x1,y1) = d1Q2,B计算点(x2,y2) = d2Q1,由于椭圆曲线上是可以满足乘法交换和结合律,所以 d1Q2 = d1d2G = d2d1G = d2Q1 ,因此双方的 x 坐标是一样的,所以它是共享密钥,也就是会话密钥。4、客户端和服务端分别使用工作密钥,计算主密钥,客户端随机数,服务端随机数,字符串常量"key expansion",经PRF计算生成工作密钥。工作密钥包括加密密钥和校验密钥,具体密钥长度由选择的密码算法决定。客户端支持的压缩算法列表。

Java学习笔记 3782

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

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

武培轩 1672

《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场

当数据具有资产属性之后,数据便可以直接或者间接地为公司、为社会创造价值和收益,并且可以作为一种特殊的商品在市场中进行交易。 与传统的商品交易相比,数据资产交易的市场前景更广阔,但同时也面临着很多的挑战,主要包括: 数据的质量、价格如何定义 在合法合规的前提下,数据的交易如何确保不会泄露用户的隐私 如何构建合理的激励机制来鼓励更多的参与方加入数据交易市场中 大数据交易 数据交易的定义 数据交易是指一种对数据进行买卖的行为,大数据交易由三方共同参与,分别为数据提供方、大数据交易平台和数据需求方:

IEEE802_11的博客 3431

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

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

weixin_58724261的博客 6615

自动驾驶中的多传感器融合实战:用卡尔曼滤波搞定毫米波雷达与摄像头航迹对齐

本文深入探讨了自动驾驶中多传感器融合的实战技术,重点介绍了如何使用卡尔曼滤波实现毫米波雷达与摄像头的航迹对齐。通过分析传感器特性差异、时空同步挑战及工程化实现步骤,提供了包括状态向量定义、观测矩阵设计和故障检测机制在内的完整解决方案,最终实现0.15米以内的高精度航迹对齐。

weixin_28728495的博客 410

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

Unity的多语言本地化是一个很实用的功能,它可以帮助游戏支持多种语言,让不同语言的玩家都能够更好地体验游戏。 而实现本地化的方案也有很多种,各个方案之间也各有优劣,后面也会对多个方案进行介绍学习。 本文就来介绍一个专门作用于多语言本地化的插件:I2 Localization 。

努力前行,总会成为自己心中的那道光 3万+

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

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

embelfe_segge的博客 1155

Mastercam软件二次开发:使用C#进行Mastercam二次开发

C#(发音为“C Sharp”)是一种现代、面向对象的编程语言,由微软开发,首次发布于2000年。它结合了C和C++的强大功能,同时引入了Java的垃圾回收机制,使得C#在开发效率和运行性能之间找到了一个良好的平衡点。C#的设计目标是提高开发者的生产力,它支持多种编程范式,包括面向对象、泛型、委托和事件等,这使得它成为开发Windows应用程序、Web应用程序、游戏(尤其是使用Unity引擎)和企业级应用的理想选择。

kkchenjj的博客 2209

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

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

weixin_30959723的博客 4728

数据资产可视化分析:PowerBI在大数据管理中的实战

目的:帮你搞懂“为什么数据资产需要可视化?”“PowerBI能帮企业解决什么问题?”,并掌握用PowerBI做大数据可视化的实战技巧。范围:覆盖数据资产定义、可视化分析原理、PowerBI核心功能(数据连接、建模、可视化)、零售企业实战案例,以及未来趋势与挑战。背景:为什么企业的数据像乱堆的玩具?核心概念:数据资产、可视化分析、PowerBI分别是什么?它们怎么配合?实战步骤:用PowerBI帮零售企业整理“销售玩具箱”,做出能指导决策的仪表盘;应用场景:不同部门怎么用这个“整理好的玩具箱”?

2501_92132293的博客 906

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Long类型返回前端精度丢失

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

weixin_44823875的博客 3677

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

qq_40788998的博客 2137

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

假人有限元模型

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

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、付费专栏及课程。

余额充值