在JavaScript中,如何编写一个函数将给定的[编辑:正整数 ]数字(低于1000亿)转换为3个字母的缩写 - 其中0-9和az/AZ计为字母,但是点(因为它在许多比例字体中如此微小)不会,并且在字母限制方面会被忽略?
这个问题与这个有用的线程有关,但它不一样; 例如,那个函数将转向例如"123456 - > 1.23k"("123.5k"是5个字母)我正在寻找做"123456 - > 0.1m"("0 [.] 1m"为3个字母的东西).例如,这将是希望函数的输出(左原始,右理想返回值):
0 "0"
12 "12"
123 "123"
1234 "1.2k"
12345 "12k"
123456 "0.1m"
1234567 "1.2m"
12345678 "12m"
123456789 "0.1b"
1234567899 "1.2b"
12345678999 "12b"
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新:谢谢!在做出以下修改时,答案在于并按照要求运作:
function abbreviateNumber(value) {
var newValue = value;
if (value >= 1000) {
var suffixes = ["", "k", "m", "b","t"];
var suffixNum = Math.floor( (""+value).length/3 );
var shortValue = '';
for (var precision = 2; precision >= 1; precision--) { …Run Code Online (Sandbox Code Playgroud) 就像Stackoverlow声誉四舍五入,我希望用货币做同样的事情
$ 1,000 => 1k
$ 1,000,000 => 1m
我怎样才能在JavaScript中实现这一点(最好是在jQuery中)?
可能重复:
有没有办法将数字转换为友好格式?(例如$ 1.1k)
如何格式化类似Stack Overflow信誉格式的数字
我在JS中有很多数字,我想让它们以更短,更易于理解的方式出现.
所以:
1,000,000 = 1M
1,200,000 = 1.2M
1,450 = 1.45K and so on...
Run Code Online (Sandbox Code Playgroud)
任何想法我如何在JS或JQuery中做到这一点?
如在图像中.对于某些值正确转换但有些值未转换...您可以在图像中看到
我想将数字转换为百万.我使用货币格式功能转换数字,但我无法转换数字.
这是控制器部分.对于某些数字,它转换为数百万,而对于某些数字,它没有转换..请有人帮忙.
$scope.MoneyFormat = function (labelValue)
{
// Nine Zeroes for Billions
return Math.abs(Number(labelValue)) >= 1.0e+9
? Math.abs(Number(labelValue)) / 1.0e+9 + "B"
// Six Zeroes for Millions
: Math.abs(Number(labelValue)) >= 1.0e+6
? Math.abs(Number(labelValue)) / 1.0e+6 + "M"
// Three Zeroes for Thousands
: Math.abs(Number(labelValue)) >= 1.0e+3
? Math.abs(Number(labelValue)) / 1.0e+3 + "K"
: Math.abs(Number(labelValue));
}
Run Code Online (Sandbox Code Playgroud)
在这里,我使用Moneyformat转换数字.这是我转换数字的控制器部分
$scope.rep.won = $scope.MoneyFormat($scope.rep.won);
$scope.outlook.rem = $scope.MoneyFormat($scope.outlook.rem);
$scope.rep.expectedAmount = $scope.MoneyFormat($scope.rep.expectedAmount);
$scope.rep.potential = $scope.MoneyFormat($scope.rep.potential);
$scope.rep.quota = $scope.MoneyFormat($scope.rep.quota);
Run Code Online (Sandbox Code Playgroud)