JavaScript:
Arredondamento de números
Como fazer:
Aqui está como você arredonda números em JavaScript usando Math.round()
, Math.ceil()
, e Math.floor()
:
let originalNumber = 2.567;
let roundedDown = Math.floor(originalNumber); // 2
let roundedUp = Math.ceil(originalNumber); // 3
let rounded = Math.round(originalNumber); // 3 (já que .567 é mais do que .5)
console.log(roundedDown); // Imprime: 2
console.log(roundedUp); // Imprime: 3
console.log(rounded); // Imprime: 3
Para fixar em um certo número de casas decimais, use toFixed()
:
let twoDecimals = originalNumber.toFixed(2); // "2.57" (retorna uma string)
console.log(twoDecimals); // Imprime: "2.57"
Converta a string de volta para um número com um mais unário ou Number()
:
let numberAgain = +twoDecimals; // 2.57
console.log(numberAgain); // Imprime: 2.57
Mergulho Profundo
Arredondar números não é novo; é tão antigo quanto os números. Em JavaScript, Math.round()
usa o “arredondamento para metade mais próxima”: se a parte fracionária é 0,5, ele arredonda para o número par mais próximo.
Para mais controle, toFixed()
pode ser sua primeira escolha, mas lembre-se, ele retorna uma string. Converter de volta para um número pode ser um passo extra, mas garante que você continue trabalhando com tipos numéricos.
Alternativas? Bibliotecas como lodash
oferecem _.round(number, [precision=0])
para um controle mais matizado. Ou, o mais novo Intl.NumberFormat
lhe dá formatação de alta precisão além de apenas arredondar.
Falando em precisão, cuidado com as peculiaridades de ponto flutuante em JavaScript. 0.1 + 0.2
não é exatamente igual a 0.3
devido a como os números são armazenados. Às vezes, arredondar torna-se necessário para corrigir tais erros de ponto flutuante.
Veja Também
- Documentação Math da Mozilla: MDN Web Docs
- Arredondamento financeiro com
Intl.NumberFormat
: API de Internacionalização ECMAScript - Arredondamento
lodash
: Documentos Lodash