Eu tenho duas cadeias que contêm apenas números:
var num1 = '20',
num2 = '30.5';
Eu esperava poder adicioná-los, mas eles estão sendo concatenados:
num1 + num2; // = '2030.5'
Como posso forçar essas seqüências a serem tratadas como números?
javascript
Andrew
fonte
fonte
Documentos MDN para parseInt
Documentos MDN para parseFloat
Em parseInt, radix é especificado como dez, de modo que estamos na base 10. No javascript não restrito, um número precedido por um número
0
é tratado como octal. Obviamente, isso causaria problemas!Veja também a resposta do ChaosPandion para obter um atalho útil usando um operador unário . Criei um violino para mostrar os diferentes comportamentos.
http://jsfiddle.net/EtX6G/
fonte
+num1 + +num2
é mais curto, sem dúvida mais elegante. Basicamente, o+
operador unário se converte emNumber
Eu recomendaria usar o operador unary plus, para forçar uma eventual sequência a ser tratada como número, entre parênteses, para tornar o código mais legível da seguinte forma:
Então, no seu caso, é:
fonte
fonte
converter as cordas para
floats
comparseFloat(string)
ou paraintegers
comparseInt(string)
fonte
parseInt(string, 10)
consulte developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/…Se você precisar adicionar duas strings juntas, que são números muito grandes, será necessário avaliar a adição em todas as posições da string:
fonte
Você pode usar isso para adicionar números:
fonte
experimentar
ou, dependendo de suas necessidades:
http://www.javascripter.net/faq/convert2.htm
Convém pegar o livro Javascript: The Good Parts , de Douglas Crockford. Javascript tem uma coleção considerável de dicas! Este livro ajuda bastante a esclarecê-los. Veja também
e o excelente ensaio do Sr. Crockford, Javascript: a linguagem de programação mais incompreendida do mundo .
fonte
Eu sempre subtraí zero.
Concedido que o método do operador unário é um caractere a menos, mas nem todo mundo sabe o que é um operador unário ou como pesquisar no Google quando não sabe o que é chamado.
fonte
Se você deseja executar uma operação com números como seqüências de caracteres (como no caso de números maiores que 64 bits), use a biblioteca de números grandes grandes .
fonte
Aqui, você tem duas opções para fazer isso: -
.
Agora vou mostrar aqui com a ajuda de exemplos (encontre a soma de dois números).
Usando o operador mais unário
Usando a abordagem de análise
fonte
fonte
Você pode usar
parseInt
para analisar uma string em um número. Para estar no lado seguro das coisas, sempre passe10
como o segundo argumento para analisar na base 10.fonte
Certifique-se de arredondar sua resposta final para menos de 16 casas decimais para carros alegóricos, pois o script java é um buggy.
Por exemplo 5 - 7,6 = -2,5999999999999996
fonte
@ cr05s19xx sugeriu uma pergunta duplicada:
O JavaScript é um pouco engraçado quando se trata de números e adição.
Dando o seguinte
'20' - '30' = 10; // retorna 10 como um número '20' + '30' = '2030'; // Retorna eles como uma string Os valores retornados de document.getElementById são strings, portanto, é melhor analisar todos eles (mesmo aquele que funciona) em número, antes de prosseguir com a adição ou subtração. Seu código pode ser:
fonte
Use o
parseFloat
método para analisar as seqüências de caracteres em números de ponto flutuante:fonte
Eu uso isso no meu projeto.Eu uso o sinal + para tratar a string como um número (na variável with_interesst)
Espero que ajude
fonte
Funciona no meu caso, se você tiver o mesmo problema que eu e não conseguir encontrar uma solução para esse caso e encontrar essa pergunta SO.
Desculpe por um pouco fora do tópico, mas como acabei de descobrir que isso funciona, pensei que valeria a pena compartilhar.
Não sei se é uma solução alternativa suja ou realmente legítima.
fonte
Você pode usar assim:
Quando aplicar * 1 em num1, converta uma string em número.
se num1 contiver uma letra ou vírgula, retornará NaN multiplicando por 1
se num1 for nulo, num1 retornará 0
Atenciosamente!!!
fonte
Tente isso se você estiver procurando por um código Javascript simples e quiser usar duas caixas de entrada e adicionar números a partir dos dois valores. Aqui está o código.
para obter mais detalhes, visite http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html
fonte