當使用Float32Array值時,我注意到了一些不太好的angularjs行爲。使用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));
}
}
}
})
http://plnkr.co/edit/WqOwIHDF0iOS9YGe0mKj?p=preview
好,真正討厭的事情是,在進入某些東西時,甚至Float64Array行爲不同到底 - 這就是比如它是不可能有它僅包含一個減號。 :( –