Estou tentando analisar dois valores de um datagrid. Os campos são numéricos e, quando possuem uma vírgula (ex. 554,20), não consigo obter os números após a vírgula. Eu tentei parseInt
e parseFloat
. Como posso fazer isso?
javascript
parsing
floating-point
Kamil Kiełczewski
fonte
fonte
Respostas:
Se eles pretendem ser valores separados, tente o seguinte:
Se eles tiverem um valor único (como em francês, onde metade é escrita 0,5)
fonte
+(string)
vez deparseString(string)
sugerir o @Stev abaixo. Então, o primeiro exemplo seriav1 = +(values[0]); v2 = +(values[1]);
.6.000.000
. Função só Substituir Substituir primeiro separador de vírgulaVocê já tentou fazer isso? : p
+ (string) converterá a string em float.
Handy!
Portanto, para resolver seu problema, você pode fazer algo assim:
fonte
+(str)
solução -parseFloat
ignora caracteres inválidos após o número,+(str)
retornaNaN
nesses casos, que é exatamente o que eu preciso.Substitua a vírgula por um ponto.
Isso retornará apenas 554:
Isso retornará 554,20:
Então, no final, você pode simplesmente usar:
Não esqueça que
parseInt()
só deve ser usado para analisar números inteiros (sem pontos flutuantes). No seu caso, ele retornará apenas 554. Além disso, chamar parseInt () em um ponto flutuante não arredondará o número: ele ocupará seu piso (número inteiro inferior mais próximo).Exemplo ampliado para responder à pergunta de Pedro Ferreira a partir dos comentários:
Se o campo de texto contiver milhares de pontos separadores, como
1.234.567,99
os que podem ser eliminados anteriormente com outroreplace
:fonte
Se você estender o objeto String como este ..
.. você pode executá-lo assim
funciona com ponto também
fonte
@GusDeCool ou qualquer outra pessoa tentando substituir mais de separadores de milhares, uma maneira de fazê-lo é um regex substituição global:
/foo/g
. Lembre-se de que.
é um metacaractere, portanto você precisa escapar ou colocá-lo entre colchetes (\.
ou[.]
). Aqui está uma opção:fonte
Você pode usar esta função. Ele substituirá as vírgulas por '' e, em seguida, analisaráFlaot o valor e depois ajustará novamente as vírgulas em valor.
fonte
Eu tive o mesmo problema, exceto que não sabia de antemão quais eram os separadores de milhares e o separador decimal. Acabei escrevendo uma biblioteca para fazer isso. Se você estiver interessado, aqui está: https://github.com/GuillaumeLeclerc/number-parsing
fonte
Experimentar
fonte