js中金額比較大小 超過Number最大值

2021-10-12 13:53:59 字數 1646 閱讀 3035

公司是做銀行櫃面系統的,新系統前端頁面元件使用的是vue,需要封裝vue元件,完善公司元件庫,其中有乙個是金額文字框,元件需要有最大值屬性,銀行系統中金額數值會比較大,需考慮超過number的情況。

number型別最大值為9007199254740992,如果字串中的值大於此值如果轉換為number會出現精度不准。

①先判斷輸入的是否是數值型別

②拿0為標準,排除 4 種情況

1.兩個都等於0

2.乙個大於0,乙個等於0

3.乙個小於0,乙個等於0

4.乙個大於0,乙個小於0

③拆分整數字、小數字,分別比較

numbercompare(num1, num2) 

//判斷兩數符號判斷,基於 0 做初步比較,比較之後,只需要做同符號的判斷

let num1symbol = number(num1) >= 0 ? true : false;

let num2symbol = number(num2) >= 0 ? true : false;

if (num1symbol === true && num2symbol === false)

if (num1symbol === false && num2symbol === true)

if (num1symbol === true && num2symbol === true)

//拆分整數小數字

let num1arr = num1.split(".");

let num2arr = num2.split(".");

let num1integer = num1arr[0].replace(/^0+/, "");

let num2integer = num2arr[0].replace(/^0+/, "");

let num1decimal = num1arr[1] ? number("0." + num1arr[1]) : 0.0;

let num2decimal = num2arr[1] ? number("0." + num2arr[1]) : 0.0;

let getneedretresult = (symbol, oldresult) =>

if (oldresult === "greater")

if (oldresult === "less")

};//整數字比較

if (num1integer.length > num2integer.length)

if (num1integer.length < num2integer.length)

if (num1integer.length === num2integer.length)

if (num1integersplit[i] < num2integersplit[i])

if (

num1integersplit[i] === num2integersplit[i] &&

num1integersplit.length - 1 === i

) if (number(num1decimal) > number(num2decimal))

if (number(num1decimal) < number(num2decimal)) }}

}}

js中比較大小

注意事項 js中比較大小 的方法不能用類似 0經查詢 得到以下方法 解決方法一 if eval pageno eval total eval 函式用於在不引用任何特定物件的情況下計算 字串。解決方法二 if pageno 1 total 1 解決方法三 if pageno total 0 將分鐘轉換...

js 字串數值比較大小

寫專案模組中有乙個功能需要限定乙個inputnumber的上限,onchange超過上限,彈出提示資訊 但是遇到乙個奇葩問題,偶爾沒有超過上限也會彈出超出上限的問題 最後排查出來了問題,是因為後台返回的上限是string 1.比較的都是number console 1 2 毫無疑問 false 2....

小議 js 下字串比較大小

之前群裡有人問如何比較兩個時間大小,他的時間格式是 2014 08 08 而不是 2014 8 8。所以我給的方法是 直接比較,如 var a 2014 08 08 var b 2014 09 09 console.log a b,a很方便不是麼,但是原理是什麼呢?開啟 ecma 第 11.8.5 ...