我的数字非常小,即0.00000001 - 如果我只是{{ mynumber }}
,我会得到1e-8
的输出。
另一种选择是{{ mynumber | number:8 }}
,它会打印0.00000001
。但是,如果我有0.1
,则会打印出0.10000000
。
有没有办法在javascript / angular中格式化浮点数,以便只根据需要附加0?
答案 0 :(得分:5)
您可以使用此过滤器:
app.filter('formatNumber', function() {
return function(value) {
return value.toFixed(20).replace(/0+$/, '')
};
});
并像这样使用它:
{{ mynumber | formatNumber }}
<强> DEMO 强>
<强>更新强>
我注意到由于舍入错误,给定过滤器的结果并不总是正确的 这就是我创造一个新原因的原因:
app.filter('formatNumber', function() {
return function(value) {
var v = value.toString(),
m = v.match(/(.*)e-(\d)/);
return m ? '0.' + new Array(parseInt(m[2], 10)).join('0') + m[1].replace('.', '') : v;
};
});
以下是 DEMO (包括两种解决方案之间的比较。此处您还可以了解为什么您应该选择第二种过滤器。)