2016-11-24 210 views
-2

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

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

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

让的说从数据供给量是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. 

有什么想法吗?

谢谢!

+9

值'12'和'12.00'正是如出一辙。 – Pointy

+0

'a'已经是类型编号,它在Javascript中是一个浮点值。 '12'与'12.00'相同。 – Jameson

+0

你尝试过SIMD吗? var t = SIMD.Float32x4(12.0,12.0,12.0,12.0); SIMD.Float32x4.extractLane(t,0);提取车道应给浮点数 –

回答

3

如果是有关显示号码作为货币或类似的,你需要使用角度的格式:

{{a | number:2}} 
+0

谢谢,我已经更新了包括背景的问题。它是一个输入字段。我不认为我可以在输入字段上使用格式。 – innek

+0

@innek您可以使用指令来实现相同。我在下面给出了一个工作示例。 – Aruna

-2

有你的Parsefloat这样后试图.toFixed的方法:

变种num = parseFloat(a).toFixed(2);

0

没有办法在JavaScript中使用浮点表示法,因为没有浮点类型 - 所有的数字类型都是:Number。

既然你只是想用它来显示,你必须坚持使用字符串符号(当你想到它,当你在屏幕上打印一个浮点数时,不管语言如何,它会变成一个字符串,特别是当知道浮游物在记忆中的样子时,这绝对不是人类可读的,至少大部分是:))。

我是积极的角度不会抱怨你是否给它“12”,12,12.00或“12.00”。如果它是你写的东西,在将值传递给脚本的有问题的部分之前,编写一个小型转换器函数来使用它。

+0

感谢您的意见。我将输入字段类型设置为“数字”,因为它会在移动设备中显示数字键盘。该字段供用户输入金额,因此只需要数字,小数点。如果我使用toFixed(2),它会返回字符串。角度会抛出错误:错误:[ngModel:numfmt]预期'12.00'是一个数字 – innek

+0

根本不要使用'toFixed' - 给它一个数字(在这种情况下为12)。只有在显示值时才格式化它。 – Shomz

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>

+0

我跑了你的片段,我看到'12',而不是'12 .00' – ppovoski

+0

我可以看到'12.00'。你使用了哪个浏览器? – Aruna

+0

Firefox 43,这可能是问题... – ppovoski

相关问题