使用Javascript,我想格式化一个数字,以便始终显示3位数字,以及它的正确标识符(例如:百万,千) . 如果低于100,000,则该数字应仅显示“千位”数字
所有数字都将是零以上的整数,最高数字将是数万亿 .
我正在寻找的几个例子:
-
1千
-
13千
-
627千
-
2.85百万
-
67.9百万
-
153亿
-
9.52亿
-
等......
我尝试的所有解决方案最终成为意大利面条代码,我希望有人能找到一个干净,智能的解决方案 .
编辑:
我最终使用了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) + "
");
});
2 回答
对于整数,您可以尝试将数字缩短到所需的位数,然后添加一个名称,例如
以上内容并不完整 . 应该有一个限制,超过1万亿,它会停止缩短数量 .
可能有更好的方法,但这将有效:
function getTextNums(number){
}
getTextNums(4533544433000)