AngularJs格式化极小的十进制数字(1e-8)
AngularJs formatting extremely small decimal numbers (1e-8)
我有一个非常小的数字,即0.00000001——如果我只做{{ mynumber }}
,我会得到1e-8
的输出。
另一种选择是执行{{ mynumber | number:8 }}
,它将打印出0.00000001
。然而,如果我有0.1
,它会打印出0.10000000
。
有没有一种方法可以在javascript/angular中格式化浮点值,以便只在需要时附加0?
您可以使用以下过滤器:
app.filter('formatNumber', function() {
return function(value) {
return value.toFixed(20).replace(/0+$/, '')
};
});
并像这样使用:
{{ mynumber | formatNumber }}
演示
更新
我注意到,由于舍入误差,给定滤波器的结果并不总是正确的
这就是为什么我做了一个新的:
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(包括两种解决方案之间的比较。在这里,您还可以看到为什么您更喜欢第二种过滤器)。
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 在javascript中接受十进制数字的Regex
- 如何在TextBox中只允许使用十进制数字
- 如何删除“"使用jQuery从十进制数字中提取
- 只允许整数和十进制数字textbow jquery(不带正则表达式)
- 十进制数字的 Javascript 正则表达式 - 替换非数字和多个小数点
- 使用 toFixed 对十进制数字进行舍入
- 如何使用 JavaScript 删除十进制数字
- 如何防止 toFixed 四舍五入十进制数字
- 我如何修改这个JavaScript正则表达式来检查字符串是否是一个最多必须有2个十进制数字的数字
- JavaScript中的Regex,用于验证十进制数字
- 如何在d3 radialProgress中显示十进制数字
- 如何让我的javascript计算器计算十进制数字
- AngularJs格式化极小的十进制数字(1e-8)
- 带gettersetter的角度1.4.x数字字段不适用于十进制数字
- 十进制数字的正则表达式
- 动画十进制数字
- Intl.使用数字选项的排序器和自然排序不正确地对十进制数字进行排序
- 在按下键时验证只有十进制数字的数字
- 谁能解释这个过程与转换十进制数字二进制