javascript如何将数字12转换为浮点数12.00(包含2位小数),而不是字符串

时间:2016-11-24 23:58:56

标签: javascript

有没有办法将12号转换为浮点数12.00(2位小数),而不是字符串。

背景:所以我有一个角度输入字段。

<input 
                                        type="number" 
                                        step="0.01" 
                                        ng-model="data.amount">

假设数据Feed的数量为12.我想将其显示为12.00 所以我需要将12变成12.00并将其分配给data.amount。 这就是为什么虽然12和12.00是相同的,但我希望它以不同的方式显示。

var a = 12;
a.toFixed(2); 
//returns "12.00" as string, i want it to return a number, because angular input type ="number" expect a number

parseFloat(a.toFixed(2)); parseFloat removes decimals.

任何想法?

谢谢!

4 个答案:

答案 0 :(得分:3)

如果要将数字显示为货币等,则需要使用角度格式:

{{a | number:2}}

答案 1 :(得分:0)

在JavaScript中没有办法使用float符号,只是因为其中没有float类型 - 所有数字类型都是:Number。

由于你只想用它来显示,你必须坚持使用字符串表示法(当你想到它时,当你在屏幕上打印一个浮点数时,无论语言如何,它都会成为一个字符串,尤其是当知道浮子在记忆中的样子时,这对人类来说绝对是不可读的,至少大部分都是如此:))。

我很肯定Angular不会抱怨你是否给它“12”,12,12.00或“12.00”。如果它是您编写的内容,请在将值传递给脚本中有问题的部分之前编写一个小的转换器函数。

答案 2 :(得分:0)

由于您无法将filterng-model一起使用,因此您可以使用directive来实现与以下相同的内容。

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

app.controller('TestController', function($scope) {
  $scope.data = {
    amount: 12
  };
});

app.directive('toFixed', ['$filter', function($filter){
   return {
     require: 'ngModel',
     link: function(scope, element, attrs, ngModelController) {

      ngModelController.$parsers.push(function(data) {
        return $filter('number')(data, attrs.toFixed);
      });

      ngModelController.$formatters.push(function(data) {
        return $filter('number')(data, attrs.toFixed);
      });
     }
   };
}]);

angular.bootstrap(document, ['app']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-controller="TestController">
<input 
                                        type="number" 
                                        step="0.01" 
                                        ng-model="data.amount" to-fixed="2">
</div>

答案 3 :(得分:-2)

您是否尝试过像Parsefloat这样的.toFixed方法:

var num = parseFloat(a).toFixed(2);