格式化 Angular.js 中的数字

Formatting numbers in Angular.js

我在 Angular.js 中有一个变量,我应该这样填写:

values.push({x: '' + d.x + 'h', y: d.y / 100})

d.x 和 d.y 是我应该在 ndv3 中显示的数字 multiBarChart.But 我应该格式化数字,就好像我有 2500,我得到 2 500.How 可以我做吗?

这是一个小的 Javascript 函数,它解析提供的数字并将其格式化为所需的输出:

function formatNumber(str) {
    var parts = (str + "").split("."),
        main = parts[0],
        len = main.length,
        output = "",
        i = len - 1;

    while(i >= 0) {
        output = main.charAt(i) + output;
        if ((len - i) % 3 === 0 && i > 0) {
            output = " " + output;
        }
        --i;
    }
    // put decimal part back
    if (parts.length > 1) {
        output += "." + parts[1];
    }
    return output;
}

使用提供的号码调用此函数:

formatNumber(4876931.19) // output will be: 4 876 931.19

function formatNumber(str) {
    var parts = (str + "").split("."),
        main = parts[0],
        len = main.length,
        output = "",
        i = len - 1;
    
    while(i >= 0) {
        output = main.charAt(i) + output;
        if ((len - i) % 3 === 0 && i > 0) {
            output = " " + output;
        }
        --i;
    }
    // put decimal part back
    if (parts.length > 1) {
        output += "." + parts[1];
    }
    return output;
}

console.log(formatNumber(4876931.19))

我写了 Angularjs 个过滤器示例。jsfiddle

HTML 文件

<div>
    <label >{{"4876931.19" | numberFilter}}</label>
</div>

App Js

angular.module('myApp', ['filters']);

过滤js

angular.module('filters', []).filter('numberFilter', [function () {
    return function (number) {
        if (!angular.isUndefined(number)) {
               var parts = number.split(".");
               var str = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, " ");         
               if(parts[1] !== undefined){
                   str+="."+parts[1];
               }
               return str;
        }
    };
}]);

更新代码