Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS数字过滤器fractionSize限制为20位小数_Angularjs_Angularjs Filter - Fatal编程技术网

AngularJS数字过滤器fractionSize限制为20位小数

AngularJS数字过滤器fractionSize限制为20位小数,angularjs,angularjs-filter,Angularjs,Angularjs Filter,为什么AngularJS中的数字过滤器fractionSize限制为20位小数 Distance1<span ng-model='distance'>{{distance| number:20}}</span> <br /> span{ 填充:3倍; 利润率:12像素; 背景:黄色; } 距离1{{distance | number:20}} 距离2{{distance | number:21}} 原始猜测 虽然我无法在数字过滤器中找到一个引用,但我猜它在

为什么AngularJS中的数字过滤器fractionSize限制为20位小数

Distance1<span ng-model='distance'>{{distance| number:20}}</span> <br />
span{
填充:3倍;
利润率:12像素;
背景:黄色;
}

距离1{{distance | number:20}}
距离2{{distance | number:21}}
原始猜测 虽然我无法在数字过滤器中找到一个引用,但我猜它在更深的某个地方使用了
Number.toFixed
,它被限制为20个十进制空间。根据:

小数点后显示的位数;这可能是一个介于0和20之间(包括0和20)的值,并且实现可以选择支持更大范围的值。如果省略此参数,则将其视为0

更好的猜测 我做了一些测试,我认为这是
Number.prototype.toFixed
的限制的组合,最大长度为20,加上过滤器中存在
var MAX_DIGITS=22
。我进行了以下测试以验证我的理论:

var $number = angular.injector().get('numberFilter')
$number(1, 20) // 1.00000000000000000000, 22 total chars
$number(1, 21) // NaN.000000000000000000000, 23 total chars (assuming if NaN evaluated to a single char)
$number(10, 20) // NaN.00000000000000000000
$number(10, 19) // 10.0000000000000000000

如您所见,22不是指实际的数值,它似乎指的是字符串长度。仍然不清楚它如何处理
$number(0,21)
而不输出NaN字符串。

基本上是它的20位小数。您可以通过将
$scope.distance
更改为
1
来检查它。
var $number = angular.injector().get('numberFilter')
$number(1, 20) // 1.00000000000000000000, 22 total chars
$number(1, 21) // NaN.000000000000000000000, 23 total chars (assuming if NaN evaluated to a single char)
$number(10, 20) // NaN.00000000000000000000
$number(10, 19) // 10.0000000000000000000