Resumo
Eu apenas pensei em três métodos por enquanto. Se os leitores pensam em outros bons métodos, eles também podem se comunicar.
parseint
operador de bits
Math.floor math.ceil
Descrição
1. Parseint
1. Exemplo
parseint ("13nash"); // 13parseint ("" ") // nanparseint (" 0xa ") // 10 (hexadecimal) parseint (" 13 ") // 13ParseInt (" 070 ") // ES3 é 56 (ES5) é 70PARSIP (070) //2. Regras de conversão:
(1). De acordo com o Exemplo (1), o Parseint será analisado até que pare quando não
(2). De acordo com o Exemplo (2), é Nan ao analisar uma corda vazia, em vez de 0
(3). De acordo com o Exemplo (3), o Parseint pode converter números hexadecimais em decimal
(4). De acordo com o Exemplo (4), Parseint ignora os espaços da corda
3. Desvantagens:
(1). De acordo com o Exemplo (5), podemos saber que o Parseint é incompatível ao converter matrizes octais. O ES3 considerará 070 como um valor octal, mas o ES5 considerará 070 como um decimal.
(2). De acordo com o Exemplo (6) (7), podemos saber que, quando o Parseint for executado, ele primeiro converterá o parâmetro em uma string e depois o executará em um número inteiro
4. Explicação: Por que (5) (6) as execuções convertem 070 em números inteiros, mas os resultados são diferentes? Este também é o segundo ponto de como resolver as deficiências.
Porque ao ler a documentação oficial que vi se a string não for uma string, ela é convertida em uma. Esta passagem. Ou seja, se o parâmetro não for uma string, primeiro a converterá em uma string e depois em um número inteiro. Por exemplo, o parseint (070) no Exemplo (6) realmente converte 070 em uma string primeiro. Você pode tentar 070+ "" ou string (070) e sabe que 070 será convertido para "56" porque 070 é um sistema octal. Então se torna parseint ("56"), e o número inteiro final é 56. Se você está em ES3 ou ES5, é 56
2. Operador de bits
1. Exemplo
console.log (0 | "123.45") // 123console.log (0 | 123.45) // 123console.log (0 ^ 123.45) // 123Console.log (~~ 123.45) // 123
2. Princípio: JavaScript não possui o conceito de números inteiros, e todos os tipos numéricos são números de ponto flutuante de precisão dupla. Ao usar operadores de bits, ele primeiro converterá o operando em um número inteiro, o que é conveniente para operação. 0 e outros valores não alterarão o valor da operação
3. Math.floor e Math.ceil
1. Exemplo
Console.log (Math.floor (2.3) // 2console.log (Math.floor (-2.3) //-3console.log (math.ceil (2.3) // 3console.log (math.ceil (-2.3) //-2
2. Os dois são insuficientes: Math.Floor recebe o número mínimo do número; Enquanto Math.ceil recebe o número inteiro máximo. Então, se arredondássemos -2,3, receberíamos -2, mas se usarmos Math.floor, receberíamos -3. 2.3 Usa Math.ceil para obter 3, mas precisamos apenas de 2.
3. Resolva:
// Defina uma função de função por si mesmo getint (val) {return val> 0? Math.Floor (Val): Math.ceil (Val);}