我创建了一个JavaScript方法来检查数字是否为浮点数。每次我测试浮点方法时,它都会一直返回FALSE。我不确定我在做什么错。任何帮助将非常感激!

下面是我的代码..谢谢!

function isFloat(n){

    var patt =  new RegExp('[+-]([0-9]*[.])?[0-9]+');
    return patt.test(n)
}


console.log(isFloat(12.40));

最佳答案

有一种检查数字是否为浮点数的简便方法。只需将底值与原始值进行比较即可。如果它们相同,则为整数。



function isFloat(n) {
  return Math.floor(n) !== n;
}

console.log(isFloat(1));
console.log(isFloat(1.2));
console.log(isFloat(12));
console.log(isFloat(12.4));





当且仅当您仅在数字上使用它时,此方法才有效。如果您担心有人传入非数字,可以执行其他检查。

function isFloat(n) {
  return typeof n === 'number' && Math.floor(n) !== n;
}


或者,如果您正在运行支持它的环境,则可以使用Number.isInteger进一步简化此操作。



function isFloat(n) {
  return typeof n === 'number' && !Number.isInteger(n);
}

console.log(isFloat(1));
console.log(isFloat(1.2));
console.log(isFloat(12));
console.log(isFloat(12.4));
console.log(isFloat('a'));

10-04 22:47