格式化Angular.js中的数字

时间:2015-07-21 12:05:21

标签: angularjs number-formatting angularjs-filter

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

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

d.x和d.y是我应该在ndv3 multiBarChart中显示的数字。但我应该格式化数字,好像我有2500,我得到2 500.我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

我编写了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, "$1 ");         
               if(parts[1] !== undefined){
                   str+="."+parts[1];
               }
               return str;
        }
    };
}]);

更新了代码

答案 1 :(得分:0)

这是一个小的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

&#13;
&#13;
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))
&#13;
&#13;
&#13;