使用Javascript,我想格式化數字以始終顯示3位數字,以及它的正確標識符(例如:Million,Thousand)。如果在100,000以下,該數字應該只顯示「千位」數字總是顯示帶有3位數字和描述符的數字
所有數字都將爲大於零的整數,最高數字將爲數萬億。
的幾個例子就是我在尋找:
- 1千
- 13千
- 627千
- 285萬
- 6790萬
- 1.53億
- 9.52億
- etc ...
我試過的所有解決方案都變成了意大利麪條代碼,我希望有人能夠找到一個乾淨,智能的解決方案。
編輯:
我結束了使用RobG的解決方案的一部分,但制定出我自己的具體細節。我說四捨五入以及
function getNumberName(num) {
var numNames = ['', 'Thousand', 'Million', 'Billion', 'Trillion'];
num = num.toString();
var len = num.length - 1;
return numNames[len/3 | 0];
}
function test(num) {
var numStr = num.toString();
if (num < 1000) {
return numStr;
} else if (num < 1000000) {
return numStr.slice(0, -3) + "," + numStr.slice(-3);
}
numStr = Math.round(parseFloat(numStr.slice(0, 3) + "." + numStr[3])).toString() + Array(numStr.slice(3).length + 1).join("0");
var remainder = numStr.length % 3;
var before = numStr.slice(0, remainder);
var after = numStr.slice(remainder, 3);
var sep = "";
if (before.length) {
sep = ".";
}
return before + sep + after + " " + getNumberName(num);
}
var nums = [0, 1, 12, 123, 1234, 12345, 123456, 1237567, 12325678, 123856789, 123e7, 125e8, 123.6e9, 123e10];
nums.forEach(function(num) {
document.write(num + ": $" + test(num) + "<br/>");
});
您應該能夠根據位數確定名稱,並且名稱位於數組中,例如, 'namesArray [Math.floor(num.length/3)]'。 。 – RobG