將普通的數字轉換為帶千位分隔符格式的數字字串是乙個非常常見的問題,千位分隔符格式的規則是數字的整數部分每三位一組,以「,」分節。小數部分不分節 。
示例:19,351,235.235767
這裡有幾個常見的實現方法。
實現思路是將數字轉換為字元陣列,再迴圈整個陣列, 每三位新增乙個分隔逗號,最後再合併成字串。因為分隔符在順序上是從後往前新增的:比如 1234567新增後是1,234,567 而不是 123,456,7 ,所以方便起見可以先把陣列倒序,新增完之後再倒序回來,就是正常的順序了。要注意的是如果數字帶小數的話,要把小數部分分開處理。
function numformat(num)
res.push(arr[i]);
}res.reverse(); // 再次倒序成為正確的順序
if(num[1])else
return res;
}var a=1234567894532;
var b=673439.4542;
console.log(numformat(a)); // "1,234,567,894,532"
console.log(numformat(b)); // "673,439.4542"
使用js自帶的函式 tolocalestring
語法:numobj.tolocalestring([locales [, options]])
tolocalestring()
方法返回這個數字在特定語言環境下的表示字串。
var a=1234567894532;
var b=673439.4542;
console.log(a.tolocalestring()); // "1,234,567,894,532"
console.log(b.tolocalestring()); // "673,439.454" (小數部分四捨五入了)
要注意的是這個函式在沒有指定區域的基本使用時,返回使用預設的語言環境和預設選項格式化的字串,所以不同地區數字格式可能會有一定的差異。最好確保使用 locales 引數指定了使用的語言。
注:我測試的環境下小數部分會根據四捨五入只留下三位。
使用正規表示式和replace函式,相對前兩種我更喜歡這種方法,雖然正則有點難以理解。
replace 語法:str.replace(regexp|substr, newsubstr|function)
其中第乙個 regexp
物件或者其字面量所匹配的內容會被第二個引數的返回值替換。
function numformat(num))+$)/g,function($1));
})return res;
}var a=1234567894532;
var b=673439.4542;
console.log(numformat(a)); // "1,234,567,894,532"
console.log(numformat(b)); // "673,439.4542"
給數字新增千分位分隔符
法一 int i 0,j 0 void recombination char a,long long n if n 10 0 include intmain recombination a,n for k j k 0 k printf c a k return0 注意 此程式可在educoder中實...
千位分隔符 js 實現
最近被同事問到js如何實現給長數字新增千位分隔符,即 1344444 13,444,444 這是乙個很常見的前端面試題。看起來簡單,剛開始我都懶得寫。仔細一想,挺考邏輯的,實現方法有很多種,可以用三位迴圈 字串陣列分隔,也可以使用正則。剛開自己用js實現了堆疊,太多,不夠優雅,同時也暴露了自己原生j...
JS 實現千位分隔符
將普通的數字轉換為帶千位分隔符格式的數字字串是乙個非常常見的問題,千位分隔符格式的規則是數字的整數部分每三位一組,以 分節。小數部分不分節 示例 19,351,235.235767 這裡有幾個常見的實現方法。實現思路是將數字轉換為字元陣列,再迴圈整個陣列,每三位新增乙個分隔逗號,最後再合併成字串。因...