我注意到在使用Float32Array值时,angularjs的一些不太好的行为。
基本上我测试了这三个
angular.module("myApp", []).controller("myCtrl", function($scope) {
$scope.n = 0.2; // Displays as 0.2
$scope.arr1 = new Float32Array(1);
$scope.arr1[0] = 0.2; // 0,20000000298023224
$scope.arr2 = new Float64Array(1);
$scope.arr2[0] = 0.2; // Displays as 0.2
});
我确实理解0.2作为二元分数的周期性问题。
但是,您是否知道如何告诉 toString 方法(或其他一些函数)考虑较低的精度并在适当的时候舍入小数?
这是我添加的指令,使其更好(但仍然不完全):
.directive("numberfloat", function(){
return {
scope: {n: "=model"},
template: '<input type="number" ng-model="m" ng-model-options="{getterSetter: true}"/>',
link: function($scope){
$scope.m = function(newVal){
if(newVal){
$scope.n = newVal;
}
return parseFloat($scope.n.toFixed(4));
}
}
}
})
答案 0 :(得分:0)
您可以使用number
filter来修复模板本身中显示数字的精度,即在视图图层中。
e.g。 {{arr1[0] | number:2 }}
会将精度固定在2位小数位。