20

重複の可能性:
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を置くべきなのか..助けてください?

4

2 に答える 2

53

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("青"); // 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 進数の先頭に 0 が含まれている場合は、誤って 8 進数になってしまわないように、基数を 10 に指定することをお勧めします。例えば:

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

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

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

このコードでは、両方の行が文字列「010」を数値に解析しています。1 行目は、文字列が 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("青"); // NaN を返す

続きを読む, 続きを読む

同様の質問 詳細はこちら

于 2012-10-10T06:12:57.917 に答える
10

まず、parseInt2 番目の引数のみを受け入れます。基数といいます。使用する数値体系を表します。例では、数値を 2 進数または 16 進数のコードに変換できます。

parseFloat1 つの引数のみを受け入れます。

于 2012-10-10T06:02:28.350 に答える