如何在javascript中检查一个值是否为浮点数

3

我想要检查我的输入是否为浮点数。

所以类似这样的代码...

if (typeof (input) == "float")
do something....

怎样才是正确的方法?


1
请查看https://dev59.com/yG865IYBdhLWcg3wTcpY。 - betamax
3个回答

15

尝试使用parseFloat

parseFloat()函数会解析一个参数(如果需要,先将其转换为字符串),并返回一个浮点数。

if(!isNaN(parseFloat(input))) {
    // is float    
}

1
如果我在输入中传递整数而不是浮点数会怎样? - Shivek Parmar
!Number.isInteger(val) - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger 或者请参考页面顶部的“此处已有答案”链接。 - MrColes
@MrColes:在这个上下文中,您的评论是错误的。 OP明确要求如何识别浮点数。!Number.isInteger('lorem ipsum')也会返回true。正如MDN所指出的那样,Number.isInteger()方法确定传递的值是否为整数。 - naveen
parseFloat("2A") 返回 2,这不是 NaN,因此这是不正确的。 - thienDX
@thienDX:2A是一个十六进制数。MDN注释,对于大于10的基数,英文字母表示大于9的数字。例如,对于十六进制数(基数16),使用A到F。 - naveen
@naveen 这不是一个好的例子。parseFloat("2Z") 也会返回 2。 - thienDX

3
如spraff所说,您可以使用typeof检查输入的类型。在这种情况下
if (typeof input === "number") {
    // It's a number
}

JavaScript 中只有 Number 类型,没有分开的 floatinteger 类型。如果想要确定 JavaScript 中的类型,可以参考这篇文章:Say what? 如果原本的数据类型是其他类型(比如字符串),但你希望将它转换为数字(如果可能的话),可以使用 NumberparseFloat
input = Number(input);
if (!isNaN(input)) {
    // It was already a number or we were able to convert it
}

更多:


2

typeof foo === "number"

在Javascript中,所有数字都是浮点数。请注意类型名称用引号括起来,它是一个字符串,并且全小写。还要注意typeof是一个运算符,而不是函数,不需要括号(尽管它们是无害的)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接