Você pode arredondar um número em javascript para 1 caractere após o ponto decimal (corretamente arredondado)?
Eu tentei o * 10, round, / 10, mas deixa duas casas decimais no final do int.
javascript
rounding
andador
fonte
fonte
Math.round(n * 10) / 10
funciona. Qual é o seu código?Respostas:
Math.round(num * 10) / 10
funciona, aqui está um exemplo ...se você quiser que ele tenha uma casa decimal, mesmo quando isso seria um 0, adicione ...
EDIT: Adicionar rodada com função de precisão ...
Usando este princípio, para referência, aqui está uma pequena função redonda prática que exige precisão ...
... uso ...
... o padrão é arredondar para o número inteiro mais próximo (precisão 0) ...
... e pode ser usado para arredondar para o valor mais próximo de 10 ou 100 etc ...
... e manuseio correto de números negativos ...
... e pode ser combinado com o toFixed para formatar consistentemente como string ...
fonte
.toFixed()
pois ele retorna uma string quando você quiser um número.parseFloat
removerá os decimais deixados por.toFixed()
se for um número inteiro (zeros). Geralmente, se você quiser fazer as contas, é melhor seguir o seu primeiro exemplo. Se você deseja exibir um número na sua interface do usuário, use.toFixed()
..toFixed()
, pois pode retornar diferentes resultados de arredondamento para diferentes navegadores. Leia este post para obter detalhes sobre o tópico!fonte
toFixed()
tem falhas - eu a vi em um navegador Chrome onde chamotoFixed()
, em seguida, converto em uma string e mostra algo como10.00000000068
- estranho. Não é possível reproduzir isso de forma confiável..toFixed()
como ele retorna umString
quando você talvez quer umNumber
Se você usar
Math.round(5.01)
, receberá em5
vez de5.0
.Se você usar,
toFixed
terá problemas de arredondamento .Se você quer o melhor dos dois mundos, combine os dois:
Você pode criar uma função para isso:
fonte
lodash
tem umround
método:Docs .
Fonte .
fonte
Eu voto a favor
toFixed()
, mas, para o registro, aqui está outra maneira que usa deslocamento de bits para converter o número em um int. Portanto, sempre arredonda para zero (baixo para números positivos, alto para negativos).Mas ei, como não há chamadas de função, é muito rápido. :)
E aqui está um que usa correspondência de string:
Eu não recomendo usar a variante de string, apenas dizendo.
fonte
Tente com isto:
menos complicado e mais fácil de implementar ...
com isso, você pode criar uma função para fazer:
Mostrar snippet de código
EDIT : veja como arredondar usando ROUND MEIA CIMA. Modo de arredondamento que muitos de nós aprendemos na escola primária
fonte
x = número, n = casas decimais:
fonte
Por que não apenas
fonte
fonte
Para concluir a melhor resposta:
O número do parâmetro de entrada "nem" pode sempre ser um número; nesse caso, .toFixed não existe.
fonte
Versão ES 6 da resposta aceita:
fonte
Usando o método toPrecision:
fonte
12.345.toPrecision( 2 )
é"12"
.Se seu método não funcionar, plz publique seu código.
No entanto, você pode realizar a tarefa de arredondamento como:
Vai lhe dar 234,56
similarmente
Vai dar 234,5
Dessa forma, você pode usar uma variável no lugar da constante, conforme usado acima.
fonte
Pouco filtro angular, se alguém quiser:
use se via:
:)
fonte
Em geral, o arredondamento é feito pela escala:
round(num / p) * p
O uso da notação exponencial manipula o arredondamento dos números + ve, corretamente. No entanto, esse método falha ao arredondar os casos de borda corretamente.
Aqui também está uma função que escrevi para fazer o arredondamento aritmético. Você pode testá-lo você mesmo.
fonte
Isso parece funcionar de maneira confiável em qualquer coisa que eu jogue:
Ele é arredondado para que você precise modificá-lo de acordo com o caso de uso. Isso deve funcionar:
fonte
Se você se preocupa com o arredondamento adequado, então:
Caso contrário, se não o fizer, você já terá uma resposta das postagens anteriores
fonte
Math.round( num * 10) / 10
não funcionaPor exemplo,
1455581777.8-145558160.4
dá-lhe1310023617.3999999
.Então, use apenas
num.toFixed(1)
fonte
Fiz um que retorna o tipo de número e também coloca decimais apenas se necessário (sem preenchimento 0).
Exemplos:
O código:
fonte
Eu encontrei uma maneira de evitar os problemas de precisão:
fonte
obrigado
fonte