当前位置: 首页 > 编程笔记 >

在JavaScript中判断整型的N种方法示例介绍

晁璞
2023-03-14
本文向大家介绍在JavaScript中判断整型的N种方法示例介绍,包括了在JavaScript中判断整型的N种方法示例介绍的使用技巧和注意事项,需要的朋友参考一下

整数类型(Integer)在JavaScript经常会导致一些奇怪的问题。在ECMAScript的规范中,他们只存在于概念中:

所有的数字都是浮点数,并且整数只是没有一组没有小数的数字。

在这篇博客中,我会解释如何去检查某个值是否为整型。
ECMAScript 5

在ES5中有很多方法你可以使用。有时侯,你可能想用自己的方法:一个isInteger(x)的函数,如果是整型返回true,否则返回false.

让我们看看一些例子。

通过余数检查

你可以使用余数运算(%),将一个数字按1求余,看看余数是不是0。

function isInteger(x) {
  return x % 1 === 0;
}

我喜欢这个方法,因为它非常简单,而且有效。

> isInteger(17)
true
> isInteger(17.13)
false

在操作余数运算时你得小心一点,因为结果取决于第一个数的符号,如果是正的,结果就是正的;否则就是负的。

> 3.5 % 1
0.5
> -3.5 % 1
-0.5

然后,我们也可以检查0,这其实不是一个问题。但问题是:这个方法对非数字也会返回true,因为 % 会将它转换成数字:

> isInteger('')
true
> isInteger('33')
true
> isInteger(false)
true
> isInteger(true)
true

可以通过很简单的类型检查来解决:

function isInteger(x) {
  return (typeof x === 'number') && (x % 1 === 0);
}

通过Math.round() 如果一个数字取整以后还跟之前的值一样,那么它就是整数。在JavaScript中可以通过Math.round()来检查:

function isInteger(x) {
  return Math.round(x) === x;
}

这个方法也不错

> isInteger(17)
true
> isInteger(17.13)
false

它也可以判断非数字,因为Math.round()总是返回数字,并且===只有当类型一样时才返回true.

> isInteger('')
false

如果你想让代码更清晰一点,你可以添加类型检查(就是我们在之前版本做的)。另外,Math.floor()和Math.ceil()可以像Math.round()一样工作。 通过位操作检查 位操作符提供另外一种“取整”的方法:

function isInteger(x) {
  return (x | 0) === x;
}

这个解决方案(跟其它位运算一样)有一个缺陷:它无法处理超过32位的数字。

> isInteger(Math.pow(2, 32))
false

通过parseInt()检查 parseInt()也提供了跟Math.round()类似将数字转换成整型的方法。 让我们看看这个方法为什么不错。

function isInteger(x) {
  return parseInt(x, 10) === x;
}

像Math.round()解决方案一样,它也可以处理非数字的情况,但是它也不能正确地处理所有的整型数字:

> isInteger(1000000000000000000000)
false

为什么?parseInt()在解析整数之前强迫将第一个参数解析成字符串。因此使用这种方法将数字转换成整型不是一个好的选择。

> parseInt(1000000000000000000000, 10)
1
> String(1000000000000000000000)
'1e+21'

就像上面那样,parseInt()在解析'1e+21'时在1处停止处理了,所以它才会返回1. ECMAScript 6 对于Math.round()扔补充,ES6提供了另外一个将数字转换成整型的方法:Math.trunc()。该函数会移除数字的小数部分。

> Math.trunc(4.1)
4
> Math.trunc(4.9)
4
> Math.trunc(-4.1)
-4
> Math.trunc(-4.9)
-4

此外,ECMAScript6不需要去处理检查整数那些琐碎的任务,因为它带有一个内置函数 Number.isInteger()。

 类似资料:
  • 本文向大家介绍JavaScript 判断数据类型的4种方法,包括了JavaScript 判断数据类型的4种方法的使用技巧和注意事项,需要的朋友参考一下 本文提供四种方法判断js数据类型,这里记录了它们之间的差异,分别是 typeof 运算符、instanceof 运算符、constructor 属性、Object.prototype.toString 方法。 一、使用 typeof 判断数据类型

  • 本文向大家介绍javascript 判断整数方法分享,包括了javascript 判断整数方法分享的使用技巧和注意事项,需要的朋友参考一下 判断整数的方法有两种:正则判断和逐字判断。 由于逐字判断效率过于低下,这里就不予描述了,有兴趣的看客可以自己谷歌。 1.正则判断 效果测试: http://jsfiddle.net/wzsdp9Lc/ 扩展功能列表 2.取整判断 该方法的思路是取整后判断是否等

  • 本文向大家介绍javascript中对变量类型的判断方法,包括了javascript中对变量类型的判断方法的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String;复杂数据类型是Object,Object中还细分了很多具体的类型,比如:Array, Fun

  • 本文向大家介绍toString.call()通用的判断数据类型方法示例,包括了toString.call()通用的判断数据类型方法示例的使用技巧和注意事项,需要的朋友参考一下 大家都知道判断数据类型的方法有很多。我们常用的有typeof但是,这个方法有一定的局限性。 typeof 无法区分null 数组和对象,通常我们会区分判断Array和Object 有时会用instanceof 来判断是不是一

  • 本文向大家介绍JavaScript中判断数据类型的方法总结,包括了JavaScript中判断数据类型的方法总结的使用技巧和注意事项,需要的朋友参考一下 typeof typeof用的比较多的时候,是判断某个全局变量在不在,假如某个页面定义了一个全局变量。假如你做如下判断: 解决的方法是我们如下写: 用了typeof之后,就不会报错了!这是typeof的应用之一! 此外,typeof还可以进行数据类

  • 本文向大家介绍javascript中判断json的方法总结,包括了javascript中判断json的方法总结的使用技巧和注意事项,需要的朋友参考一下 简单地说, JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串(伪对象) ,然后就可以在函数之间轻松地传递这个字符串,或者 在异步应用程序中将字符串从 Web 客户端传递给服务器端程序 。这个字符串看起来有点儿古怪(稍后会看到