string js intparse - JavaScriptで文字列を整数に変換するにはどうすればよいですか?





10 Answers

parseInt関数を試してください:

var number = parseInt("10");

しかし問題がある。 parseInt関数を使用して "010"を変換しようとすると、8進数として検出され、8が返されます。したがって、基数(2〜36)を指定する必要があります。 この場合、ベース10。

parseInt(string, radix)

例:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false
google apps parseint

JavaScriptでstringintegerに変換するにはどうすればよいですか?




ParseInt()と+は異なります

parseInt("10.3456") // returns 10

+"10.3456" // returns 10.3456



parseIntを試してください。

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



ここで速度の比較はほとんどありません(Mac OSのみ)... :)

chrome 'plus'と 'mul'が最も速く(> 700,000,00 op / sec)、 'Math.floor'は最も遅いです。 Firefoxの 'plus'は最も遅いです(!) 'mul'は最も高速です(> 900,000,000 op / sec)。 Safariでは、 'parseInt'はfastes、 'number'は最も遅いです(ただし、resulatsは> 13,000,000 <31,000,000>と非常に似ています)。 したがって、キャスト文字列をintに変換するSafariは、他のブラウザよりも10倍以上遅いです。 だから勝者は ' mul 'です:)

このリンクでブラウザで実行することができますhttps://jsperf.com/casttonumber




また、サイドノートとして:Mootoolsは、任意のネイティブ文字列(または浮動小数点数(または整数))で使用される関数toInt()を持っています。

"2".toInt()   // 2
"2px".toInt() // 2
2.toInt()     // 2



StringをIntegerに変換するには、parseFloatとNOT parseIntの使用をお勧めします。 理由は次のとおりです。

parseFloatの使用:

parseFloat('2.34cms')  //Output: 2.34
parseFloat('12.5')     //Output: 12.5
parseFloat('012.3')    //Output: 12.3

parseIntを使う:

parseInt('2.34cms')  //Output: 2
parseInt('12.5')     //Output: 12
parseInt('012.3')    //Output: 12

したがって、parseIntが小数点以下の値を破棄するのに対して、parseFloatは浮動小数点数を扱うことができるため、小数点以下の値を保持したい場合にはより適しています。 整数値が必要な場合は、parseIntを使用してください。




stringnumberに変換するにはstr - 0を試してください。

> str = '0'
> str - 0
  0
> str = '123'
> str - 0
  123
> str = '-12'
> str - 0
  -12
> str = 'asdf'
> str - 0
  NaN
> str = '12.34'
> str - 0
  12.34

文字列をintに変換するいくつかの方法のパフォーマンスを比較する2つのリンクがあります

https://jsperf.com/number-vs-parseint-vs-plus

http://phrogz.net/js/string_to_number.html




Googleが結果としてこの回答をくれましたので、...

私は実際には文字列を整数として保存する必要がありました.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:
        max 4 chars, 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;
}



上記のすべてが正しいです。 その前に、これは文字列内の数字であることを確認してください。 "typeot x === 'number'"それ以外の場合はNaN

 var num = "fsdfsdf242342";
 typeof num => 'string';

 var num1 = "12423";
 typeof num1 => 'number';
 +num1 = > 12423`



function doSth(){
  var a = document.getElementById('input').value;
  document.getElementById('number').innerHTML = toNumber(a) + 1;
}
function toNumber(str){
  return +str;
}
<input id="input" type="text">
<input onclick="doSth()" type="submit">
<span id="number"></span>




Related