如何在JavaScript中将字符串转换为整数?


当前回答

我喜欢这个把戏:

~~"2.123"; //2
~~"5"; //5

双位负数在小数点之后会丢弃任何内容,并将其转换为数字格式。我被告知它比调用函数等稍快,但我并不完全相信。

我刚才在这里看到的另一个方法(一个关于JavaScript>>>运算符的问题,它是一个零填充右移),它显示了用这个运算符将数字移位0将数字转换为uint32,如果您也希望它无符号,这是很好的。同样,这将转换为无符号整数,如果使用有符号数字,这可能会导致奇怪的行为。

"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5

其他回答

如果您使用parseInt将浮点转换为科学符号,请小心!例如:

parseInt("5.6e-14") 

将导致

5 

而不是

0

数字()

Number(" 200.12 ")  // Returns 200.12

Number("200.12")  // Returns 200.12

Number("200") // Returns 200

parseInt()

parseInt(" 200.12 ")  // Return 200

parseInt("200.12")  // Return 200

parseInt("200") // Return 200

parseInt("Text information") // Returns NaN

parseFloat()

它将返回第一个数字

parseFloat("200 400")  // Returns 200

parseFloat("200") // Returns 200

parseFloat("Text information") // Returns NaN

parseFloat("200.10")  // Return 200.10

数学地板()

将数字舍入为最接近的整数

Math.floor(" 200.12 ")  // Return 200

Math.floor("200.12")  // Return 200

Math.floor("200") // Return 200

JavaScript中的字符串到数字:

一元+(最推荐)

+numStr易于使用,性能优于其他支持整数和小数

console.log(+'123.45') // => 123.45

其他一些选项:

正在分析字符串:

整数的parseInt(numStr)整数和小数的parseFloat(numStr)

console.log(parseInt('123.456')) // => 123
console.log(parseFloat('123'))   // => 123

JavaScript函数

整数的数学函数,如round(numStr)、floor(numStr)、ceil(numStr)整数和小数的数字(numStr)

console.log(Math.floor('123'))     // => 123
console.log(Math.round('123.456')) // => 123
console.log(Math.ceil('123.454'))  // => 124
console.log(Number('123.123'))     // => 123.123

单目运算符

所有基本一元运算符,+numStr、numStr-0、1*numStr,numStr*1和numStr/1所有都支持整数和小数注意numStr+0。它返回一个字符串。

console.log(+'123')  // => 123
console.log('002'-0) // => 2
console.log(1*'5')   // => 5
console.log('7.7'*1) // => 7.7
console.log(3.3/1)   // =>3.3
console.log('123.123'+0, typeof ('123.123' + 0)) // => 123.1230 string

位运算符

两个波浪号~~numStr或左移0,numStr<<0只支持整数,不支持小数

console.log(~~'123')      // => 123
console.log('0123'<<0)    // => 123
console.log(~~'123.123')  // => 123
console.log('123.123'<<0) // => 123

//正在分析console.log(parseInt('123.456'))//=>123console.log(parseFloat('123'))//=>123//功能console.log(数学楼层('123'))//=>123console.log(数学舍入('123.456'))//=>123console.log(数学.ceil('123.454'))//=>124console.log(编号('123.123'))//=>123.123//Unary公司console.log(+'123')//=>123console.log('002'-0)//=>2console.log(1*'5')//=>5console.log('7.7'*1)//=>7.7console.log(3.3/1)//=>3.3console.log('123.123'+0,typeof('123.123'+0))//=>123.1230字符串//按位(Bitwise)console.log(~~'123')//=>123console.log('0123'<<0)//=>123console.log(~~'123.123')//=>123console.log('123.123'<<0)//=>123

对于C和JavaScript之间的绑定,我实际上需要将字符串“保存”为整数,因此我将字符串转换为整数值:

/*
    Examples:
        int2str( str2int("test") ) == "test" // true
        int2str( str2int("t€st") ) // "t¬st", because "€".charCodeAt(0) is 8364, will be AND'ed with 0xff
    Limitations:
        maximum 4 characters, so it fits into an integer
*/
function str2int(the_str) {
    var ret = 0;
    var len = the_str.length;
    if (len >= 1) ret += (the_str.charCodeAt(0) & 0xff) <<  0;
    if (len >= 2) ret += (the_str.charCodeAt(1) & 0xff) <<  8;
    if (len >= 3) ret += (the_str.charCodeAt(2) & 0xff) << 16;
    if (len >= 4) ret += (the_str.charCodeAt(3) & 0xff) << 24;
    return ret;
}

function int2str(the_int) {
    var tmp = [
        (the_int & 0x000000ff) >>  0,
        (the_int & 0x0000ff00) >>  8,
        (the_int & 0x00ff0000) >> 16,
        (the_int & 0xff000000) >> 24
    ];
    var ret = "";
    for (var i=0; i<4; i++) {
        if (tmp[i] == 0)
            break;
        ret += String.fromCharCode(tmp[i]);
    }
    return ret;
}

尝试parseInt。

var number = parseInt("10", 10); //number will have value of 10.