编程语言
首页 > 编程语言> > javascript – Angularjs避免数字过滤器的科学记数法

javascript – Angularjs避免数字过滤器的科学记数法

作者:互联网

我需要为我的应用打印非常小的数字.如果它们都以十进制格式显示,我更喜欢.有没有办法用angularjs数字过滤器做这个或者我必须自己编写或以某种方式修改现有的?

http://jsfiddle.net/ADukg/2386/

使用Javascript

var myApp = angular.module('myApp',[]);

 function MyCtrl($scope) {
   $scope.MyNum1 = 0.000001;
   $scope.MyNum2 = 0.0000001;
 }

HTML

<div ng-controller="MyCtrl">
  Small Number: {{MyNum1 | number:8}}<br/>
  Very Small Number: {{MyNum2 | number:8}}
</div>

输出不一致

Small Number: 0.00000100
Very Small Number: 1e-7

解决方法:

我还没有完全测试过这个,我不知道如何让这个工作在jsfiddle,但这似乎暂时有效.

使用Javascript

var app = angular.module('myApp', []);

app.filter('decimalFormat', function () {
  return function (text) {
    return parseFloat(text).toFixed(20).replace(/0+$/,'');
  };
});

HTML

<div ng-controller="MyCtrl">
  Small Number: {{MyNum1 | number:8 | decimalFormat}}<br/>
  Very Small Number: {{MyNum2 | number:8 | decimalFormat}}
</div>

兰登评论后编辑,加上逗号:

使用Javascript

var app = angular.module('myApp', []);

app.filter('decimal', function () {
  return function (text) {
      var parts = parseFloat(text).toFixed(8).split('.');
      parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
      return parts.join('.');
    }
  };
});

function MyCtrl($scope) {
  $scope.MyNum1 = 0.12345678912;
  $scope.MyNum2 = 0.000000100001;
  $scope.MyNum3 = 0;
  $scope.MyNum3 = 1123123.05;
}

HTML

<div ng-controller="MyCtrl">
  Small Number: {{MyNum1 | decimal}}<br/>
  Very Small Number: {{MyNum2 | decimal}}<br/>
  Zero: {{MyNum3 | decimal}}<br/>
  Million: {{MyNum4 | decimal}}<br/>
</div>

标签:scientific-notation,html,javascript,angularjs
来源: https://codeday.me/bug/20190725/1534763.html