Quero remover vírgulas da string e calcular essa quantidade usando JavaScript.
Por exemplo, tenho esses dois valores:
- 100.000,00
- 500.000,00
Agora, quero remover as vírgulas dessa string e quero o total dessa quantidade.
Quero remover vírgulas da string e calcular essa quantidade usando JavaScript.
Por exemplo, tenho esses dois valores:
Agora, quero remover as vírgulas dessa string e quero o total dessa quantidade.
Respostas:
Para remover as vírgulas, você precisará usar replacena string. Para converter para um float e fazer as contas, você precisará de parseFloat:
var total = parseFloat('100,000.00'.replace(/,/g, '')) +
parseFloat('500,000.00'.replace(/,/g, ''));
Resposta relacionada, mas se você deseja executar a limpeza de um usuário inserindo valores em um formulário, eis o que você pode fazer:
const numFormatter = new Intl.NumberFormat('en-US', {
style: "decimal",
maximumFractionDigits: 2
})
// Good Inputs
parseFloat(numFormatter.format('1234').replace(/,/g,"")) // 1234
parseFloat(numFormatter.format('123').replace(/,/g,"")) // 123
// 3rd decimal place rounds to nearest
parseFloat(numFormatter.format('1234.233').replace(/,/g,"")); // 1234.23
parseFloat(numFormatter.format('1234.239').replace(/,/g,"")); // 1234.24
// Bad Inputs
parseFloat(numFormatter.format('1234.233a').replace(/,/g,"")); // NaN
parseFloat(numFormatter.format('$1234.23').replace(/,/g,"")); // NaN
// Edge Cases
parseFloat(numFormatter.format(true).replace(/,/g,"")) // 1
parseFloat(numFormatter.format(false).replace(/,/g,"")) // 0
parseFloat(numFormatter.format(NaN).replace(/,/g,"")) // NaN
Use a data internacional local via format. Isso limpa todas as entradas incorretas, se houver, ele retorna uma string de NaNvocê pode verificar. Atualmente, não há como remover vírgulas como parte do local (a partir de 12/10/19) , portanto, você pode usar um comando regex para remover vírgulas usando replace.
ParseFloat converte a definição deste tipo de string para número
Se você usar React, esta é a aparência da função de cálculo:
updateCalculationInput = (e) => {
let value;
value = numFormatter.format(e.target.value); // 123,456.78 - 3rd decimal rounds to nearest number as expected
if(value === 'NaN') return; // locale returns string of NaN if fail
value = value.replace(/,/g, ""); // remove commas
value = parseFloat(value); // now parse to float should always be clean input
// Do the actual math and setState calls here
}
replaceeparseFloat. aqui está um caso de teste rápido: jsfiddle.net/TtYpH