如何在 JavaScript 中转换整数: 1. 使用 parseInt() 函数,句型为“parseInt(“要转换的值”)”。 2. 使用位运算符,例如“~~123.45”。 3. 使用“Math.floor(value)”和“Math.ceil(value)”语法。
本教程的运行环境:Windows 7系统,JavaScript版本1.8.5,Dell G3笔记本。
方法一:parseInt()函数
parseInt() 是一个将值转换为整数的全局方法。 转换过程如下:
console.log(parseInt("123abc")); //返回数字123 console.log(parseInt("1.73")); //返回数字1 console.log(parseInt(".123")); //返回值NaN
登录后复制
浮点数中的点对于parseInt()来说是非法字符javascript转换成整数,因此该值的小数部分不会被转换。
如果是以0开头的数字字符串,parseInt()会将其视为八补数:先将其转换为八补数,然后将其转换为十补数并返回。
如果是以 0x 开头的数字字符串,parseInt() 会将其视为 16 的补码:首先将其转换为 16 的补码,然后将其转换为 10 的补码并返回。
var d = 010; //八进制数字字符串 var e = 0x10; //十六进制数字字符串 console.log(parseInt(d)); //返回十进制数字8 console.log(parseInt(e)); //返回十进制数字16
登录后复制
parseInt()还支持base模式,可以将二进制补码、八进制补码、十六进制补码等不同补码的数字字符串转换为整数。 基本模式由 parseInt() 函数的第二个参数指定。
实施例1
以下代码将十六进制补码数字字符串“123abc”转换为十进制补码整数。
var a = "123abc"; console.log(parseInt(a,16)); //返回十进制整数1194684
登录后复制
实施例2
以下代码将二的补码、八的补码和十的补码数字字符串转换为十的补码整数。
console.log(parseInt("10",2)); //把二进制数字 10 转换为十进制整数,为 2 console.log(parseInt("10",8)); //把八进制数字 10 转换为十进制整数,为 8 console.log(parseInt("10",10)); //把十进制数字 10 转换为十进制整数,为 10
登录后复制
实施例3
如果第一个参数是十的补码值并且包含0前缀,为了防止被误解为八的补码数javascript转换成整数,第二个参数值应该指定为10,即显式定义基模式而不是默认基本模式。 。
console.log(parseInt("010")); //把默认基模式数字 010 转换为十进制整数为 10 console.log(parseInt("010",8)); //把八进制数字 010 转换为十进制整数为 8 console.log(parseInt("010",10)); //把十进制数字 010 转换为十进制整数为 10
登录后复制
方法2:位运算符
console.log(0 | "123.45")//123 console.log(0 | 123.45)//123 console.log(0 ^ 123.45)//123 console.log(~~123.45)//123
登录后复制
原理:JavaScript没有整数的概念,所有数值类型都是双精度浮点数。 使用按位运算符时,首先会将操作数转换为整数以方便运算。但是,如果将 0 与其他值进行异或,则按位或不会改变运算值。
方法 3:Math.floor 和 Math.ceil
例子
console.log(Math.floor(2.3))//2 console.log(Math.floor(-2.3))//-3 console.log(Math.ceil(2.3))//3 console.log(Math.ceil(-2.3))//-2
登录后复制
两者的缺点是:
Math.floor 获取数字的最小整数; Math.ceil 获取最大整数。 因此,如果我们对原始的 -2.3 进行四舍五入,我们将得到 -2,并且使用 Math.floor 我们将得到 -3。 而2.3使用Math.ceil得到3,而我们想要的是2。
解决:
//自行定义一个函数 function getInt(val){ return val>0 ? Math.floor(val):Math.ceil(val); }
登录后复制