Eu preciso arredondar, por exemplo , 6.688689
para 6.7
, mas sempre me mostra 7
.
Meu método:
Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or
Math.round(6.688689, 2);
Mas o resultado é sempre o mesmo 7
... O que estou fazendo de errado?
javascript
rounding
Vitalii Ponomar
fonte
fonte
(6.688689).toFixed(1);
.toFixed
retorna uma string. Certifique-se de envolver o resultadoNumber()
. Veja a resposta aceita e outras.Respostas:
fonte
Number((456.1235).toFixed(3)) -> 456.123
,Number((1.235).toFixed(2)) -> 1.24
... estúpido javasript ...fonte
Math.round(1.005*100)/100
por exemplo, do MDN1.005 * 100 = 100.49999999999999
(pelo menos no mecanismo JS que tentei). É por isso que não funciona e por que você nunca deve confiar nos flutuadores que são perfeitamente precisos.Use a
toFixed()
funçãofonte
Atualizações (2019-10). Graças ao código Reece Daniels abaixo, agora disponível como um conjunto de funções empacotadas na rodada esperada do npm-package (dê uma olhada).
Você pode usar a função auxiliar do exemplo MDN . Do que você terá mais flexibilidade:
Atualizações (2019-01-15). Parece que os documentos MDN não têm mais esse auxiliar. Aqui está um backup com exemplos:
Exemplos de uso:
fonte
Um
Number
objeto em JavaScript possui um método que faz exatamente o que você precisa. Esse método éNumber.toPrecision([precision])
.Assim como
.toFixed(1)
ele converte o resultado em uma string e precisa ser convertido novamente em um número. Feito usando o+
prefixo aqui.referência simples no meu laptop:
fonte
1e-10.toPrecision(3)
: "1.00e-10" - isso arredonda para dígitos significativos .Se você deseja não apenas usar,
toFixed()
mas tambémceil()
efloor()
flutuar, use a seguinte função:Produz:
UPD:
A outra maneira possível é esta:
Produz:
fonte
Minha função redonda estendida:
Saída de exemplo:
fonte
Ver abaixo
var original = 28.59;
var result=Math.round(original*10)/10
retornará você retorna28.6
Espero que seja isso que você quer ..
fonte
fonte
Eu acho que essa função pode ajudar.
fonte
Eu acho que a função abaixo pode ajudar
uso:
roundOff(600.23458,2);
retornará600.23
fonte
se você estiver no contexto node.js, poderá tentar mathjs
fonte
Existe a alternativa .toLocaleString () para formatar números, com muitas opções de localidades, agrupamentos, formatação de moeda e notações. Alguns exemplos:
Arredonde para 1 decimal, retorne um ponto flutuante:
Arredonde para duas casas decimais, formate como moeda com o símbolo especificado, use o agrupamento de vírgulas para milhares:
Formatar como moeda local :
Arredonde para o mínimo 3 decimal, force os zeros para exibir:
Estilo de porcentagem para proporções. Entrada * 100 com sinal de%
fonte
fonte
Eu tenho uma solução muito boa com se toFixed () não está funcionando.
Exemplo
fonte
Se você estiver usando o Browserify hoje, precisará tentar: roundTo uma biblioteca NPM muito útil
fonte
Pequenos ajustes nesta resposta :
fonte
roundToStep(1.015, 0.001)