本教程操作环境:windows7系统、javascript1.8.5版、dell g3电脑。
本文将会列举并说明javascript 把一个number(或者numerical的对象)转换成一个整数相关方法。
使用parseintparseint的语法如下:parseint(string, radix)
参数string的表示要解析的字符串,也可以是一个对象,会自动调用对象的tostring函数得到要解析的字符串。
parseint的第二个参数,可以指定要解析的数字的基数,注意该值介于 2 ~ 36 之间,如果该参数小于 2 或者大于 36,则 parseint() 将返回 nan。比如下面的代码,结果为8,这样可以很方便的把其他的进制的数字转换为10进制的数字:
parseint(10,8) // 结果为8
当参数 radix 的值为 0,或没有设置该参数时,parseint() 会根据 string 来判断数字的基数。
举例,如果 string 以 0x 开头,parseint() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ecmascript v3 允许 parseint() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseint() 将把它解析为十进制的整数。
注释
1. 只有字符串中的第一个数字会被返回。 什么意思呢,如果输入的字符串是123abc,123,123,那么结果是123,parseint方法会自动忽略后面的非数字部分。
2. 输入字符串开头和结尾的空格是允许的。
3. parsefloat 也具备以上两条特征,不过本文不重点讲述。
使用math.truncmath.trunc() 方法会将数字的小数部分去掉,只保留整数部分。比如以下代码:
math.trunc(13.37) // 13math.trunc(42.84) // 42math.trunc(0.123) // 0math.trunc(-0.123) // -0math.trunc(-1.123) // -1math.trunc(nan) // nanmath.trunc(foo) // nanmath.trunc() // nan
当传入的类型不是数字的时候,会自动做瘾式转换。但是如果是一个非numerical的参数的时候,返回nan。
ie浏览器并不支持这个方法,所以可以考虑polyfill:
math.trunc || (math.trunc = function(v){ return v < 0 ? math.ceil(v) : math.floor(v); // 使用math.floor和math.ceil方法})// 或者if (!math.trunc) { math.trunc = function(v) { v = +v; if (!isfinite(v)) return v; return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0); // 返回: // 0 -> 0 // -0 -> -0 // 0.2 -> 0 // -0.2 -> -0 // 0.7 -> 0 // -0.7 -> -0 // infinity -> infinity // -infinity -> -infinity // nan -> nan // null -> 0 };}
二进制位运算对于numerical的对象n,可以通过如下的方式来转换为整数:
~~n 双重位取反(double bitwise not)
n | n 位或运算(bitwise or)
n | 0 和0的位或运算(bitwise or with 0)
n << 0 位左移运算0位(bitwise left shift)
n >> 0 位右移运算0位(bitwise right shift)
n & n 为与运算(bitwise and)
比如代码如下:
~~1.23 // 1 -1.2 | -1.2 // - 1 -1.2 | 0 // - 1 3.4 >> 0 // 3 3.2 << 0 // 3 5.5 & 5.5 // 5 ~~1.2 // 1.2
注意,从上面可以看出,位运算下字符串会自动转换数字。
【推荐学习:javascript高级教程】
以上就是javascript转换成整数方法有哪些?的详细内容。
