在 JavaScript 中,是否可以检查 `10.0` 是浮点数还是整数?

4

我正在思考如何确定像10.01.0这样的数字是整数还是浮点数。在JavaScript中是否有办法检查10.0是否为浮点数或整数?谢谢。


1
回答你的问题,'10.0' 代表数字 10,它是一个整数值。如果您需要知道小数点后面的零,则必须使用字符串操作/正则表达式来检查 字符串 - Nina Scholz
1
@Quentin和其他管理员,我提名重新打开这个问题,因为从技术上讲,这不是一个重复的问题。这个问题特别询问JS浮点数中是否包含“.0” - Oscar Godson
@Oscar - 它们不是字符串,它们是数字字面量。 10.0 === 10 - Quentin
@Quentin 正确,这是我们理解的,但 OP 没有理解。10.0 is 10,这是我在我的回答中提到的。然而,你标记为重复的问题是要求检查任何浮点数,而这个问题是特别询问如何处理它。我提到需要将其转换为字符串才能做到这一点。 - Oscar Godson
1
@REDDYPRASAD - 你无法区分 1010.0。就像我说的,它们是相同的。 - Quentin
显示剩余2条评论
1个回答

2

您可以通过除以1来进行检查

function isInt(n) {
   return n % 1 === 0;
}

进一步解释,JavaScript 中无法使用 10.0。如果你使用 var i = 10.0 并输出 i,它将返回 10。这在大多数编程语言中都是普遍的现象。
如果你确实需要保留 .0,你需要将其存储为字符串。然后,你可以简单地检查该字符串是否包含 .,例如:'10.0'.indexOf('.') > -1

3
1.0 % 1 === 0 返回 true。但是 1.0 不是整数,它是浮点数。 - REDDY PRASAD
为什么不检查数字是否等于其整数值,例如 n === Math.floor(n) - Nina Scholz
2
@REDDYPRASAD 在我的回答中又增加了更多内容。在 JS 中,实际上并不存在1.0 - Oscar Godson
1
正如我在问题下面所写的那样,带有小数点和后续零的数字对于JavaScript来说是一个数字 - 而且由于JavaScript不知道整数,你可以检查是否有一个整数数字。JavaScript对于所有数字都使用64位浮点数。唯一的方法是取一个字符串并执行点和零的检查。 - Nina Scholz
2
所有编程语言都有共同点吗?强类型语言非常清楚地区分不同的子类型(短有符号整数、短无符号整数、长整数等),而不仅仅是整数和浮点数之间的区别。但当然JavaScript是弱类型的,它只有Number作为数字类型。因此,真正要问的问题并不完全清楚。 - Álvaro González
显示剩余2条评论

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