3

パラメータの数値型に応じて異なる動作をする関数を作成しました。整数または浮動小数点数。

この質問のコードを使用して、数値が浮動小数点または整数であることを確認するにはどうすればよいですか? float かどうかは簡単に検出できましたが、その数値を使用して関数を呼び出すと、javascript が原因なしにキャスト1.0する場合に遭遇しました。1

例:

function dump(a, b) {
 console.log(a, typeof b, b);
}

dump('1', 1);
dump('1.0', 1.0);
dump('1.1', 1.1);

出力 chrome、firefox、つまり、opera と safari はすべて同じ結果になりました。

1   number 1
1.0 number 1 "wrong"
1.1 number 1.1

JavaScript は型しか認識していないことはわかっていますnumberが、その強制キャストは行き過ぎているようです。私が思いついた唯一の解決策は、 のような文字列値を使用して関数を呼び出し'1.0'、ドットを検出してparseFloatorを使用することparseIntでした。

それについて何か提案はありますか?

4

2 に答える 2

4

JavaScript には単一のNumber型しかないことを認めました。したがって、1は と同じです1.0

表示目的でこれが必要な場合は、 を使用する必要がありますtoFixed

1..toFixed(1); // "1.0"
于 2012-08-03T15:41:24.857 に答える
0
number%1===0 

その条件がtrueの場合は整数、そうでない場合は float

于 2012-08-03T15:45:00.973 に答える