公司是做銀行櫃面系統的,新系統前端頁面元件使用的是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 ...