有没有办法将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.
任何想法?
谢谢!
答案 0 :(得分:3)
如果要将数字显示为货币等,则需要使用角度格式:
{{a | number:2}}
答案 1 :(得分:0)
在JavaScript中没有办法使用float符号,只是因为其中没有float类型 - 所有数字类型都是:Number。
由于你只想用它来显示,你必须坚持使用字符串表示法(当你想到它时,当你在屏幕上打印一个浮点数时,无论语言如何,它都会成为一个字符串,尤其是当知道浮子在记忆中的样子时,这对人类来说绝对是不可读的,至少大部分都是如此:))。
我很肯定Angular不会抱怨你是否给它“12”,12,12.00或“12.00”。如果它是您编写的内容,请在将值传递给脚本中有问题的部分之前编写一个小的转换器函数。
答案 2 :(得分:0)
由于您无法将filter
与ng-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);