亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java后端給前端傳Long值精度丟失的問題與解決方法

 更新時間:2025年06月11日 09:37:22   作者:眾樂樂_2008  
在Java后端將 long 類型數(shù)字傳遞到前端時,可能會出現(xiàn)精度丟失的問題,下面這篇文章主要介紹了Java后端給前端傳Long值精度丟失的問題與解決方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

在前后端分離的開發(fā)中,Java 后端通常使用 Long 類型作為主鍵 ID(如雪花算法生成的 ID)。但如果直接將 Long 返回給前端,可能會導致前端精度丟失的問題,特別是在 JavaScript 環(huán)境中。

問題本質

JavaScript 的 Number 類型基于 IEEE 754 雙精度浮點數(shù),只能安全表示的整數(shù)范圍是:

[-2^53 + 1, 2^53 - 1] => [-9007199254740991, 9007199254740991]

而 Java 的 Long 最大值是 9223372036854775807,遠超 JS 能表示的范圍。

如果后端返回:

{
  "id": 9223372036854775807
}

前端打印可能是:

console.log(data.id); // 輸出 9223372036854776000(精度已丟失)

解決方案

方法一:全局配置 Jackson 將 Long 轉為 String(推薦)

在 Spring Boot 項目中,可以通過配置 ObjectMapper,讓所有 Long 類型序列化為 String,避免精度問題:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        // Long 和 long 全部轉為字符串
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        return objectMapper;
    }
}

?? 生效后,所有 Long 類型字段將自動序列化為字符串,前端拿到的 ID 是 "9223372036854775807",避免精度問題。

方法二:僅對單個字段生效(局部注解)

如果你只想對部分字段(如 id)轉為 String,可在字段上添加注解:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

public class UserDTO {
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    // 其他字段...
}

方法三:前端處理(不推薦)

雖然前端可以用字符串處理 ID,但如果后端返回的是數(shù)字,JS 在接收數(shù)據(jù)的第一步就已經(jīng)丟了精度。因此根本的解決方式應該在后端。

總結

方式是否推薦說明
后端全局轉 String? 強烈推薦統(tǒng)一、安全
局部字段注解? 適用于個別字段
僅前端處理? 不推薦精度可能已丟失,無法挽回

到此這篇關于Java后端給前端傳Long值精度丟失問題與解決方法的文章就介紹到這了,更多相關Java傳Long值精度丟失內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺談Spring @Async異步線程池用法總結

    淺談Spring @Async異步線程池用法總結

    本篇文章主要介紹了淺談Spring @Async異步線程池用法總結,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java使用單鏈表實現(xiàn)約瑟夫環(huán)

    Java使用單鏈表實現(xiàn)約瑟夫環(huán)

    這篇文章主要為大家詳細介紹了Java使用單鏈表實現(xiàn)約瑟夫環(huán),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JAVA各種加密與解密方式總結大全

    JAVA各種加密與解密方式總結大全

    這篇文章主要給大家介紹了關于JAVA各種加密與解密方式總結的相關資料,加密是指對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • java使用servlet實現(xiàn)驗證碼

    java使用servlet實現(xiàn)驗證碼

    這篇文章主要介紹了java使用servlet實現(xiàn)驗證碼,簡單實用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java集合系列之LinkedList源碼分析

    Java集合系列之LinkedList源碼分析

    這篇文章主要為大家詳細介紹了Java集合系列之LinkedList源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java springboot 配置文件與多環(huán)境配置與運行優(yōu)先級

    Java springboot 配置文件與多環(huán)境配置與運行優(yōu)先級

    這篇文章主要介紹了Java springboot如何配置文件,進行多環(huán)境配置,以及運行優(yōu)先級,感興趣的小伙伴可以借鑒一下
    2023-04-04
  • javax.validation包里@NotNull等注解的使用方式

    javax.validation包里@NotNull等注解的使用方式

    這篇文章主要介紹了javax.validation包里@NotNull等注解的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 使用Javacsv.jar的jar包操作csv文件的方法

    使用Javacsv.jar的jar包操作csv文件的方法

    使用javacsv的jar包很方便的可以操作csv文件。下面通過本教程給大家介紹使用javacsv.jar操作csv文件的方法,感興趣的朋友一起看下吧
    2016-08-08
  • 如何使用Java實現(xiàn)請求deepseek

    如何使用Java實現(xiàn)請求deepseek

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)請求deepseek功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • RocketMQ源碼本地搭建調試方法

    RocketMQ源碼本地搭建調試方法

    這篇文章主要介紹了RocketMQ源碼本地搭建調試,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01

最新評論