如何使用Javascript针对0.5增量验证数字

How to validate number against 0.5 incremental using Javascript

本文关键字:验证 数字 何使用 Javascript 针对      更新时间:2023-09-26

我正在尝试针对0.5个增量验证javascript字符串。所以对于exmaple来说。。

var number = 1      //true
var number = 1.2    //false
var number = 1.5    //true
var number = 2.8    //false
var number = 4      //true
var number = 0.5    //true
var number = 10.4   //false

我想知道是否有人能帮我开始做这样的事情。可能会涉及regex吗?

function validateNumber(value){
    //Do validation
}

感谢您的阅读。

您可以使用返回余数的模运算符%

function validateNumber(value){
   return value % 0.5 == 0; 
}

由于时间2是最有效的操作之一,这可能比使用%:更快

function validateNumber(value) {
   return 2*value==Math.round(2*value)
}

一个更快的版本,不需要调用。

(到目前为止,这是答案的最快解决方案:http://jsperf.com/modulus-vs-times2)

function validateNumber(value) {
   return 2*value==2*value>>0
}
'd*'.?5?

试试这个。这是有效的。

请参阅演示。

http://regex101.com/r/qZ0uP0/3

这太过分了,但这可以使用HTML5验证来完成:

var validateNumber = (function() {
    var inp = document.createElement('input');
    inp.type = 'number';
    inp.step = 0.5;
    return function validateNumber(value) {
        inp.value = value;
        return !inp.validity.stepMismatch;
   };
})();

当然,在实践中使用@AmitJoki的答案。