将十进制数的输出限制为特定精度

时间:2016-11-04 05:31:35

标签: javascript jquery html angularjs html5

关于输出 999999.35 ,请帮助我?在带有html的angular或java脚本中意味着我想在6位数之后将小数点前的6位数限制为6位数,它不接受任何数字,小数点后限制最多2位数。请帮我解决这个问题。提前谢谢。

4 个答案:

答案 0 :(得分:1)

有多种内置过滤器可用于角度,让我向您展示其中之一,

过滤器允许我们限制数字可以显示的小数位数。传递参数2,

我们将追加:2到数字过滤器:

<!-- Displays: 123.46 -->
{{ 123.456789 | number:2 }}

这不是您想要的确切答案,但您可以玩它,甚至可以制作自己的自定义过滤器,它会返回您想要的确切输出。

如果您想了解如何制作我们自己的自定义过滤器,请告诉我。

答案 1 :(得分:0)

使用此regex匹配器验证您的号码

function isValid(number){
    //return new RegExp(/^(\d{1,6}.\d{2})$/).test(number);//for any number
	//return new RegExp(/^([9]{1,6}.\d{2})$/).test(number);//for only 9
  return new RegExp(/^([9]{1,6}.\d{2})$/).test(number);//for less then 6 digits
}
console.log(isValid(9999.35));
console.log(isValid(999999.35));
console.log(isValid(99999.35));
console.log(isValid(999999.3545));
console.log(isValid(99999999.3545));
console.log(isValid(999999.95));
console.log(isValid(899999.35));

答案 2 :(得分:0)

以下是您正在寻找的答案,

我采用正则表达式允许前后6位数字和小数点后2位

如果模式失败,我已经指示限制输入

&#13;
&#13;
var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope) {
});
app.directive("validateWith", [function(){
    return {
        restrict: "A",
        link: function($scope, $el, $attrs){
            var regexp = eval($attrs.validateWith);
            var origVal;
            // store the current value as it was before the change was made
            $el.on("keypress", function(e){
                origVal = $el.val();
            });

            // after the change is made, validate the new value
            // if invalid, just change it back to the original
            $el.on("input", function(e){
                if(!regexp.test($el.val())){
                  e.preventDefault();
                  $el.val(origVal);
                }
                
            });
        }
    }
}]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="formCtrl">
<form name="myForm" ng-submit="onSubmit()">
    <input type="number" ng-model="price" name="price_field" required validate-with="/^\d{1,5}(\.\d{1,2})?$/">
    <span ng-show="myForm.price_field.$error.pattern">Not a valid number!</span>
    <input type="submit" value="submit"/>
</form>
</div>

</body>
</html>
&#13;
&#13;
&#13;

请运行代码段

Here is a plunker for it.

答案 3 :(得分:0)

您使用 ng-pattern 的想法是正确的。只需尝试将属性步骤添加到同一标记。

<input type="number" ng-model="price" name="price_field" ng-pattern="/^\d{0,6}(\.\d{1,2})?$/" required step="0.01">

step属性指定元素的合法数字间隔。