1. 程式人生 > >關於超過js的number型別最大值(9007199254740992),的解決辦法

關於超過js的number型別最大值(9007199254740992),的解決辦法

bug經過:點選修改無法展示資訊(修改時呼叫queryOne,以id(long)為值,頁面傳過去的id=1480042498255640-00 ,在資料庫中該id=148004249825564012,即錯誤的id)

根本原因:

js的number型別有個最大值(安全值)。即2的53次方,為9007199254740992。如果超過這個值,那麼js會出現不精確的問題。這個值為16位。

解決方法:

1.後端發字串型別。

將後端發過來的long型別轉為string型別再向前端傳。如果向前端傳的是DAO集合,則每個DAO都需要轉型別,太過於繁瑣。想想就算了。

2.在userDao中加入一個欄位

如果專案已經成型並且修改資料庫會造成不可預料的問題那麼可以在User物件中再增加一個String型別id對映欄位,如下
    private Long userId;
    private String userIdStr;
    public String getUserIdStr() {
        return this.userId+"";
    }
    public void setUserIdStr(String userIdStr) {
        this.userIdStr = userIdStr;

    }

這個方法是比較靠譜的,確實可以正常的顯示資料,查詢單個數據id的值都是正確的。但修改使用者時無法獲取前端傳過來的userDao中的userIdStr的值,因為上面的getUserIdStr()不能獲取userIdStr的值(如果id沒有值)。

3.控制使用者新建資料時id的長度。兜兜轉轉覺得這個最方便。

溫馨提示:以後設計表字段時儘量用varchar型別。

參考自網路,侵權請聯絡刪除[email protected]

相關推薦

關於超過js的number型別9007199254740992解決辦法

bug經過:點選修改無法展示資訊(修改時呼叫queryOne,以id(long)為值,頁面傳過去的id=1480042498255640-00 ,在資料庫中該id=148004249825564012,即錯誤的id)根本原因:js的number型別有個最大值(安全值)。即2的

51Nod 1277 - 字串中的KMP

【題目描述】 【思路】 假設現在有一個位置 p o s

字串中的KMP

【題目描述】 【思路】 假設現在有一個位置 pospospos ,其字首已經出現一次即 [0,pos−1][0,pos-1][0,pos−1] 這個字首已經出現了一次,現在考慮一下 next[pos]next[pos]next[pos] 的意義,其實就是包含

三個數if

輸入三個數,輸出最大值; #include<stdio.h> int main() {     int a,b,c,max;     scanf("%d%d%d",&a,&

【動態規劃】數字三角形遞迴

題目:數字三角形,形如          3      3      2   4     5     1 1    3     4     1 每個點只能選擇向左或向右走,取一條路徑,使得路徑上數字和最大。 無需求出路徑,求出最大值。 輸入n,和 n 行數字三角形 n<

hibernate實現表聯查並獲取某個欄位的隨筆

最近試用hibernate實現三表連線查詢並分組顯示某個欄位的最大值,在mysql中語句可以執行,改成hql無法執行,遂寫下隨筆以記錄 mysql中查詢,可以查詢到相應的結果 改寫成hql語句 "select o.equipment.equId, o.olderName

劍指offer:滑動視窗的Python

題目描述 給定一個數組和滑動視窗的大小,找出所有滑動窗口裡數值的最大值。例如,如果輸入陣列{2,3,4,2,6,2,5,1}及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為{4,4,6,6,6,5}; 針對陣列{2,3,4,2,6,2,5,1}

6-5 求自定型別元素的10 分

6-5 求自定型別元素的最大值(10 分)本題要求實現一個函式,求N個集合元素S[]中的最大值,其中集合元素的型別為自定義的ElementType。函式介面定義:ElementType Max( ElementType S[], int N ); 其中給定集合元素存放在陣列S

樹狀數組求 RMQ with Shifts

art code else pan [1] int space -s article 代碼: #include <iostream> #include <stdio.h> #include <string.h> #include

Hihocoder 1496 尋找狀態壓縮 + 高位前綴和

ems sca 題目 二進制 包含 aps void post 前綴 題目鏈接 Hiho 1496 設$f[i]$為二進制集合包含$i$的最大的兩個數,這個東西用高維前綴和維護。 高位前綴和轉移的具體方案 :枚舉每一位,然後枚舉每個集合,大的轉移到小的。 註意合並的

【劍指offer】59、隊列的不熟

最大值 ber 元素 const 所有 刪除元素 windows 窗口 push_back 題目一 給定一個數組和滑動窗口的大小,請找出所有滑動窗口裏的最大值。例如,{2,3,4,2,6,2,5,1}以及窗口大小3,那麽存在6個滑動窗口,最大值分別為{4,4,6,6,6,5

演算法題 90:從多個數組中找百度筆試題

題目:有n個長度均為m的整型陣列,陣列中的元素都是從小到大有序排列,從所有這些陣列m*n個數中,找出值最大的前k個。請給出思路和時間複雜度。 類似賽馬問題做法 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴

求一個二維陣列所有子陣列和的郭少周陳澤

小組成員:陳澤 郭少周 設計流程:     設計要求.:1. 輸入一個二維整形陣列,數組裡有正數也有負數。                     2.二維陣列中連續的

js獲取陣列Math.max.apply(null, arr)

/** * 獲取陣列的最大值 * @param {Array<number>} arr 陣列型別 且元素為number * @returns {any} */ getMax(arr: Array<number>) { // 利用app

HihoCoder - 1496:尋找高維字首和||手動求子集

描述 給定N個數A1, A2, A3, ... AN,小Ho想從中找到兩個數Ai和Aj(i ≠ j)使得乘積Ai × Aj × (Ai AND Aj)最大。其中AND是按位與操作。   小Ho當然知道怎麼做。現在他想把這個問題交給你。 輸入 第一行

小化儘量小

給出是個序列,如1 2 3 2 5 4 ,將其劃分成m個連續的子序列,每個子序列最少有一個元素,怎樣使每個子序列的和的最大值最小 #include <iostream> #include <ctime> using namespace std;

Leet515.在每個樹行中找Find Largest Value in Each Tree Row

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *

求矩陣的設惟一

7-2 求矩陣的最大值(設惟一) (10 分) 本題要求編寫程式,求一個給定的m×n矩陣的最大值以及位置。題目保證最大值惟一。 輸入格式: 輸入第一行給出兩個正整數m和n(1≤m,n≤6)。隨後m行,每行給出n個整數,其間以空格分隔。 輸出格式: 輸出在第一行中輸出最大值,在第二行中

Fast Arrangement 線段樹 維護區間 lazy標記

Fast Arrangement 題意: 有一列火車同一時刻只能承載K個人,然後有Q個人要買票(給出Q組區間表示要買票的區間),(注意: 火車行駛區間為a-b的範圍),問那個人可以成功買到票(先到先得)

Java 基本資料型別極限和極限

想知道 Java 基本資料型別最大值極限和最小值極限,寫個小程式就很容易知道。 測試 Integer, Long, Float 和 Double 的最大值和最小值,程式碼如下:  public