在AngularJS中格式化浮点数而不丢失精度
Formatting floating-point numbers without loss of precision in AngularJS
在AngularJS中,如何在HTML页面上输出浮点数字而不损失精度,并且不使用0进行不必要的填充?
我考虑过"数字"ng过滤器(https://docs.angularjs.org/api/ng/filter/number)但是fractionSize参数会导致固定数量的小数:
{{ number_expression | number : fractionSize}}
我正在寻找在各种其他语言中被称为"精确再现性"、"规范字符串表示"、repr、往返等的东西,但我还没能为AngularJS找到类似的东西。
例如:
- 1=>"1"
- 1.2=>"1.2"
- 1.23456789=>"1.23456789"
我自己偶然发现了一个显而易见的解决方案!完全删除"数字"ng过滤器的使用将导致AngularJS根据我的要求简单地将表达式转换为字符串。
所以
{{ number_expression }}
而不是
{{ number_expression | number : fractionSize}}
您可以捕获不带尾随零的部分,并在正则表达式替换中使用它。假设您希望保留一个尾随零(例如"78.0")以保持整洁,而不是以十进制分隔符(例如"78")结尾。
var s = "12304.56780000";
// N.B. Check the decimal separator
var re = new RegExp("([0-9]+'.[0-9]+?)(0*)$");
var t = s.replace(re, '$1'); // t = "12304.5678"
t="12304.00".replace(re, "$1"); // t="12304.0"
regex101:的解释
/([0-9]+'.[0-9]+?)(0*)$/
1st Capturing group ([0-9]+'.[0-9]+?)
[0-9]+ match a single character present in the list below
Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
0-9 a single character in the range between 0 and 9
'. matches the character . literally
[0-9]+? match a single character present in the list below
Quantifier: +? Between one and unlimited times, as few times as possible, expanding as needed [lazy]
0-9 a single character in the range between 0 and 9
2nd Capturing group (0*)
0* matches the character 0 literally
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
$ assert position at end of the string
相关文章:
- 将浮点数排序为自然数
- 使用javascript从字符串中提取浮点数
- 为大型地理位置的坐标生成浮点数
- 如何使用Javascript使浮点数的精度相同
- 从字符串到浮点数的奇怪转换
- 如何将浮点数格式化为两位数
- 浮点数的总和在 JavaScript 中没有给出小数
- 如何使用 javascript 将浮点数格式化为十进制数(7)
- HTML浮点数字字段具有高精度,但呈现四舍五入值
- 使用浮点数获取基于数组的y轴最大/最小值
- 只允许带有退格和左右箭头的浮点数
- javascript正则表达式浮点数,以字符串结尾
- 在AngularJS中格式化浮点数而不丢失精度
- 如何通过 javascript 在浮点数中保留小数点数后的 2 位数字
- 在Javascript中,大浮点数的小数位数有限制吗
- Javascript中浮点数的精度可以成为非确定性的来源吗?
- 如何将两个浮点数填充到其中一个浮点数的精度
- 什么位模式表示双精度浮点数的最大值?
- 如何测试浮点数是否是“在机器精度内”的整数
- 在Javascript中解压缩半精度浮点数