javascript - script - js intparse
JavaScriptで文字列を整数に変換するにはどうすればよいですか? (14)
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;
}
JavaScriptでstring
をinteger
に変換するにはどうすればよいですか?
ParseInt()と+は異なります
parseInt("10.3456") // returns 10
+"10.3456" // returns 10.3456
parseIntを使用して浮動小数点数を科学表記に変換する場合は注意してください。 例えば:
parseInt("5.6e-14")
結果は
5
の代わりに
0
parseIntを試してください。
var number = parseInt("10", 10); //number will have value of 10.
parseInt(stringOfNumber)
を使用する代わりに+(stringOfNumber)
を使用できparseInt(stringOfNumber)
例: +("21")
は、 parseInt("21")
ようにintの21を返します。
floatの解析にもこの単項演算子を使用できます。
string
をnumber
に変換するには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つのリンクがあります
また、サイドノートとして:Mootoolsは、任意のネイティブ文字列(または浮動小数点数(または整数))で使用される関数toInt()を持っています。
"2".toInt() // 2
"2px".toInt() // 2
2.toInt() // 2
もう一つの選択肢は、値をそれ自身でXORすることです。
var i = 12.34;
console.log('i = ' + i);
console.log('i ⊕ i ⊕ i = ' + (i ^ i ^ i));
これは出力されます:
i = 12.34
i ⊕ i ⊕ i = 12
下記の例を参照してください。疑問を解決するのに役立ちます
Example Result
parseInt("4") 4
parseInt("5aaa") 5
parseInt("4.33333") 4
parseInt("aaa"); NaN (means "Not a Number")
parseint関数を使うことで、文字列ではなく整数のopを与えるだけです
古い質問ですが、多分これは誰かに役立つかもしれません。
私は文字列をint型に変換するこの方法を使用します
var str = "25"; // string
var number = str*1; // number
したがって、1を掛けると値は変化しませんが、jsは自動的に数値を返します。
しかし、以下に示すように、 str
が数値である(または数値で表すことができる)場合は、これを使用する必要がありstr
。そうでない場合は数値ではなくNaNを返します。
あなたは、使用する単純な関数を作成することができます
function toNumber(str) {
return str*1;
}
文字列を数値に変換するJavaScriptには多くの方法があります...シンプルで便利な方法は、どちらがあなたのために働くかを選択します:
var num = Number("999.5"); //999.5
var num = parseInt("999.5", 10); //999
var num = parseFloat("999.5"); //999.5
var num = +"999.5"; //999.5
また、 数学演算は数値に変換します。例えば、...
var num = "999.5" / 1; //999.5
var num = "999.5" * 1; //999.5
var num = "999.5" - 1 + 1; //999.5
var num = "999.5" - 0; //999.5
var num = Math.floor("999.5"); //999
var num = ~~"999.5"; //999
私の好む方法は+
記号を使用することです。これはJavaScriptで文字列を数値に変換するエレガントな方法です。
最も簡単な方法は、ネイティブのNumber
関数を使用することです。
var x = Number("1000")
それがうまく動作しない場合は、 parseInt 、 unary plus 、 floorでparseFloat 、およびMath.roundメソッドがあります。
parseInt:
var x = parseInt("1000", 10); // you want to use radix 10
// so you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])
あなたの文字列が既に整数の形になっている場合は単項プラス:
var x = +"1000";
あなたの文字列が浮動小数点数であるかもしれないし、整数を必要とする場合:
var x = Math.floor("1000.01"); //floor automatically converts string to number
または、Math.floorを何回か使用する場合は、次のようにします。
var floor = Math.floor;
var x = floor("1000.01");
parseIntを呼び出すときに基数を入れることを忘れたタイプの人は、parseFloatを使用して好きなように丸めることができます。 ここで私は床を使用します。
var floor = Math.floor;
var x = floor(parseFloat("1000.01"));
興味深いことに、Math.round(Math.floorのような)は数値変換への文字列を行います。したがって、数値を丸めたい場合(または文字列に整数がある場合)、これは素晴らしい方法です。
var round = Math.round;
var x = round("1000"); //equivalent to round("1000",0)
私はここで間違った答えを投稿しました、申し訳ありません。 一定。
これは古い質問ですが、私はこのトリックが大好きです:
~~"2.123"; //2
~~"5"; //5
倍精度浮動小数点型の負の値は、小数点以下の値をすべて削除し、数値形式に変換します。 私は関数やその他のものを呼び出すよりも少し速いと言われてきましたが、私は完全に確信していません。
編集:私はちょうどhere見たもう一つの方法(ゼロの右の右シフトであるjavascriptの>>>演算子についての質問)は、この演算子で0をシフトすると数値がuint32に変換されることを示しています。また、それは無署名したい。 この場合も、 符号なし整数に変換され、 符号付きの数を使用すると不思議な動作につながる可能性があります。
"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5
私はこれを使う
String.prototype.toInt = function (returnval) {
var i = parseInt(this);
return isNaN(i) ? returnval !== undefined ? returnval : - 1 : i;
}
私はいつもint背中を得るこのように。