Eu quero usar o Javascript para arredondar um número. Como o número é moeda, quero arredondá-lo como nestes exemplos (2 casas decimais):
- 192.168 => 192.20
- 192.11 => 192.20
- 192,21 => 192,30
- 192,26 => 192,30
- 192,20 => 192,20
Como conseguir isso usando Javascript? A função Javascript interna arredondará o número com base na lógica padrão (menos e mais de 5 para arredondar).
javascript
rounding
cyberfly
fonte
fonte
ceil()
fornecerá a você193
, portanto, devemos garantir que toda a precisão que queremos manter esteja antes do ponto decimal. Em seguida, fazemos a operação inversa para restaurar o valor "original".192.19999999999997
, poderá aplicar.toFixed(1)
- se aonum
Um pouco tarde, mas pode criar uma função javascript reutilizável para esse fim:
Chame a função como
fonte
O arredondamento normal funcionará com um pequeno ajuste:
e se você deseja manter um formato de moeda, pode usar o método Number
.toFixed()
Embora isso a torne uma String =)
fonte
price.toFixed(2)
Muito perto da resposta do TheEye , mas mudo um pouco para fazê-lo funcionar:
fonte
O OP espera duas coisas:
A. arredondar para o décimo mais alto e
B. mostrar zero no centésimo lugar (uma necessidade típica da moeda).
Atender a ambos os requisitos parece exigir um método separado para cada uma das opções acima. Aqui está uma abordagem que se baseia na resposta sugerida por suryakiran:
Nota importante: esta solução produz um resultado muito diferente com números negativos e exponenciais.
Para fins de comparação entre esta resposta e duas muito semelhantes, consulte as 2 abordagens a seguir. O primeiro simplesmente arredonda para o centésimo mais próximo do habitual e o segundo simplesmente para o centésimo mais próximo (maior).
fonte
ok, isso foi respondido, mas achei que você gostaria de ver minha resposta que chama a função math.pow () uma vez. Acho que gosto de manter as coisas secas.
Isso meio que junta tudo. Substitua Math.round () por Math.ceil () por arredondamento em vez de arredondamento, que é o que o OP queria.
fonte
esta função limita decimal sem número redondo
fonte
Uso a resposta @AndrewMarshall há muito tempo, mas encontrei alguns casos extremos. Os seguintes testes não passam:
Aqui está o que eu uso agora para que o arredondamento se comporte corretamente:
Fonte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
fonte
roundUp(37.760000000000005, 4)
deveria ser37.7601
eroundUp(5.83333333, 4)
deveria ser5.8334
. Esses dois (e o seu primeiro) são válidos para o fn que forneci.parseInt sempre arredonda para baixo so ...
do parseInt () + 1
fonte