我在Angular.js中有一个变量,我应该这样填写:
values.push({x: '' + d.x + 'h', y: d.y / 100})
d.x和d.y是我应该在ndv3 multiBarChart中显示的数字。但我应该格式化数字,好像我有2500,我得到2 500.我怎么能这样做?
答案 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
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;