web-dev-qa-db-ja.com

parseInt()とparseFloat()の違い

可能性のある複製:
parseInt()とparseFloat()の動作の違い

var box  = $('.box'),
fontSize = parseInt(box.css('font-size'), 10) + 5;

 $('button').on('click', function() {
  box.animate({fontSize: fontSize});
});

// ..

 var box  = $('.box'),
 fontSize = parseFloat(box.css('font-size'), 10) + 5;

  $('button').on('click', function() {
    box.animate({fontSize: fontSize})
});

何が違うの?.

**fontSize = parseInt(box.css('font-size'), 10);**

**fontSize = parseFloat(box.css('font-size'), 10);**

そして、なぜコンテキストとして10を置く必要があります。

14
Iam_Signal

JavaScriptは、非数値プリミティブを数値に変換するための2つのメソッド、parseInt()およびparseFloat()を提供します。ご想像のとおり、前者は値を整数に変換し、後者は値を浮動小数点数に変換します。

文字列に含まれる数値リテラルも正しく変換されるため、文字列「0xA」は正しく数値10に変換されます。ただし、小数点は整数として無効な文字であるため、文字列「22.5」は22に変換されます。 。いくつかの例:

var iNum1 = parseInt( "1234blue"); // 1234を返します

var iNum2 = parseInt( "0xA"); // 10を返します

var iNum3 = parseInt( "22.5"); // 22を返します

var iNum4 = parseInt( "blue"); // NaNを返します

ParseInt()メソッドにも基数モードがあり、2進数、8進数、16進数、またはその他の任意の基数の文字列を整数に変換できます。基数はparseInt()の2番目の引数として指定されるため、16進値を解析する呼び出しは次のようになります。

var iNum1 = parseInt( "AF"、16); // 175を返します

もちろん、これは2進数、8進数、10進数(デフォルトのモード)でも実行できます。

var iNum1 = parseInt( "10"、2); // 2を返します

var iNum2 = parseInt( "10"、8); // 8を返します

var iNum2 = parseInt( "10"、10); // 10を返します

10進数に先行ゼロが含まれている場合は、基数を10に指定して、誤って8進数の値になってしまうことがないようにすることが常に最善です。例えば:

var iNum1 = parseInt( "010"); // 8を返します

var iNum2 = parseInt( "010"、8); // 8を返します

var iNum3 = parseInt( "010"、10); // 10を返します

このコードでは、両方の行が文字列「010」を数値に解析しています。最初の行は文字列が8進数の値であると見なし、2番目の行(基数を8と指定)と同じ方法で解析します。最後の行は基数10を指定しているため、iNum3は最終的に10に等しくなります。

ParseFloat()を使用する場合のもう1つの違いは、文字列が浮動小数点数を8進数や16進数ではなく、10進数で表す必要があることです。このメソッドは先行ゼロを無視するため、8進数0908は908に解析され、16進数0xAはNaNを返します。これは、xが浮動小数点数の有効な文字ではないためです。 parseFloat()には基数モードもありません。

ParseFloat()の使用例:

var fNum1 = parseFloat( "1234blue"); // 1234を返します

var fNum2 = parseFloat( "0xA"); // 0を返します

var fNum3 = parseFloat( "22.5"); //22.5を返します

var fNum4 = parseFloat( "22.34.5"); //22.34を返します

var fNum5 = parseFloat( "0908"); // 908を返します

var fNum6 = parseFloat( "blue"); // NaNを返します

続きを読む続きを読む

同様の質問詳細はこちら

43
Techie

まず、parseIntのみが2番目の引数を受け入れます。これは基数と呼ばれます。使用する数値体系を表しています。例では、数値をバイナリまたは16進コードに変換できます。

parseFloatは1つの引数しか受け入れません。