很久沒有寫技術相關的部落格了,剛好看到乙個題目就想著寫乙個解法吧,因為簡單,所以可能會比較實用。
問:請寫出乙個格式化金額的方法。
這個其實挺常見的,不過程式設計師都是比較懶的能上網搜的到的肯定不會自己寫,有git倉庫的肯定直接拉來就用,我當然也不例外。
所以我就找了乙個網上的方法。
//* 金額千分位加逗號,保留2位小數,不足補零,否則四捨五入// * 引數說明:// * num:要格式化的數字 string或者number// * decimals:保留幾位小數// * dec_point:小數點符號// * thousandssep:千分位符號// return 金額格式的字串,如'1,234,567.45'// * */function number (num, decimals, thousandssep) let prec = !isfinite(+decimals) ? 0 : math.abs(decimals) // 保留的位數一定是有限位數的正整數 let sep = (typeof thousandssep === 'undefined') ? ',' : thousandssep let s = num.tostring().replace(/,/g, '') // 字串,將,變成''; let p = parsefloat(s) // 解析乙個字串,並返回乙個浮點數 let n = isnan(p) ? 1 : p let formatnum = n.tofixed(prec).tostring().replace(/(d)(?=(d)+.)/g, function ($0, $1) ) return num ? formatnum : ''}// let num = number(333322.8199, 5,'')// console.log(num,'nm')
恩。。。其實也蠻簡單的,但是看到正則了,正則對萌新其實是不友好的,所以我就自己又寫了乙個,希望對你有幫助吧。
/**@number:需要格式化的數字@decimals:小數點位數@separator:千分位分割符**/function formatnumber(number,decimals,separator) let _separator = separator||","; let _decimals = decimals||2; let numberstr = number.tofixed(_decimals); let splitarray = numberstr.split("."); let left = splitarray[0]; let right = splitarray[1]; let array = left.split('').reverse(); let array2 = for(let i = 0; i < array.length; i++) array2.push(array[i]); } return array2.reverse().join("")+"."+right;}let number = 20200421.56787;formatnumber(number);console .log(formatnumber(number,3,null))//20,200,421.57
我的思路其實比較簡單,線分割小數點,整數部分處理千分位,處理方法也比較常見,就是字串和陣列的一些方法,先把陣列倒轉,然後迴圈插入分隔符。
好了,就這樣吧。如果你記不住正則,那麼這個解法適合。
最後反思一下, 阿里給的第一輪筆試就掛了,啊哈哈,三個題目就做了兩個半,題目都很簡單,是我自己沒準備,雖然我比較討厭刷題,但是如果你是為了乙份工作的話,尤其是大廠,還是考慮下刷題吧,雖然拿到了別的offer。
js金額千分位顯示 前端JS 金額千分位格式化函式
舉例 200000.00 格式化為 200,000.00 const formatamount function num 如果num是負數,則獲取她的符號 var sign num.indexof 0 如果存在小數點,則獲取數字的小數部分 var cents num.indexof 0 num.su...
用千分位格式化資料「123456789」
第一種用程式控制 根據特點字元來分割字串 str 要分割的字串 type 分隔符 t 每隔t數量來分割字串str 如str 1324545334 stype t 3 結果為 1,324,545,334 exception author zhanglinxing since 1.0.0 public ...
js 金額數目千分位顯示
應用中金錢數目常常使用千分位分隔,使用js寫了乙個簡單的函式。可以使用字串操作,也可以陣列操作,不過最簡單的還是正則替換。參考別人的方案 假設輸入為1234567.89,正則中先提取出數額的整數部分n 1234567 然後對n繼續使用正則替換,d 表示要查詢乙個數字,是正向肯定預查,標明要查詢的這個...