Javascript tem três funções para converter valores não numéricos em números:
– Número ();
– parseInt ();
– parseFloat ();
String vazia:
Number("") = 0
parseInt("") = NaN
parseFloat("") = NaN
Análise com o primeiro empréstimo de uma carta:
Number("a1") = NaN
parseInt("a1") = NaN
parseFloat("a1") = NaN
Análise com primeiro empréstimo 1 número:
Number("1a") = NaN
parseInt("1a") = 1
parseFloat("1a") = 1
Análise hexadecimal (10):
Number("0xA") = 10
parseInt("0xA") = 10
parseFloat("0xA") = 0
Zeros emprestados são ignorados:
parseFloat("001") = 1
parseInt("001") = 1
Number("001") = 1
Analisando números flutuantes com zeros emprestados:
parseFloat("00.1") = 0.1
parseInt("00.1") = 0
Number("00.1") = 0.1
Analisando números flutuantes sem emprestar zeros:
parseFloat("0.1") = 0.1
parseInt("0.1") = 0
Number("0.1") = 0.1
Analisando booleanos:
Number(true) = 1
Number(false) = 0
parseFloat(true) = NaN
parseFloat(false) = NaN
parseInt(true) = NaN
parseInt(false) = NaN
Análise nula:
Number(null) = 0
parseFloat(null) = NaN
parseInt(null) = NaN
Análise indefinida:
Number(undefined) = NaN
parseFloat(undefined) = NaN
parseInt(undefined) = NaN
Analisando NaN:
Number(NaN) = NaN
parseFloat(NaN) = NaN
parseInt(NaN) = NaN
Analisando números flutuantes negativos positivos:
parseFloat("+1.1") = 1.1
parseFloat("-1.1") = -1.1
parseInt("+1.1") = 1
parseInt("-1.1") = -1
Number("+1.1") = 1.1
Number("-1.1") = -1.1
Wightespace é ignorado:
parseInt(" +1") = 1
parseInt(" -1") = -1
parseFloat(" +1") = 1
parseFloat(" -1") = -1
Number(" +1") = 1
Number(" -1") = -1
parseInt suporte radix ou base:
parseInt("10",2) = 2 //binary
parseInt("10",8) = 8 //octal
parseInt("10",10) = 10 //decimal
parseInt("10",16) = 16 //hexadecimal
Todos os casos de teste são contratados:
http://jsfiddle.net/zbL7H/3/