Como posso arredondar para números inteiros em JavaScript?


91

Tenho o seguinte código para calcular uma determinada porcentagem:

var x = 6.5;
var total;

total = x/15*100;

// Result  43.3333333333

O que eu quero como resultado é o número exato 43e se o total for 43.5, deve ser arredondado para44

Existe maneira de fazer isso em JavaScript?

Respostas:


166

Use a Math.round()função para arredondar o resultado para o número inteiro mais próximo.


me ajudou também! :) Obrigado pelo link MDN amigo :)
Afzaal Ahmad Zeeshan

1
O crédito pelo link vai para @Jeremy. Obrigado por inseri-lo - tornou o início do SO muito mais divertido ter a quinta resposta que escrevi obter tantos votos quanto esta, o que certamente foi devido ao link. :-)
hmakholm deixou Monica em

2
OP não queria arredondar PARA CIMA? Nesse caso, talvez Math.ceil () seria mais apropriado
martellalex

1
@martellalex: A partir da pergunta, o OP queria que 43.333 arredondasse para 43, mas 43,5 para arredondar para 44, o que corresponde exatamente ao comportamento de Math.round () do ECMAScript de arredondar para o mais próximo e executar meio-inteiros exatos em direção ao infinito positivo.
hmakholm deixou Monica de

64
//method 1
Math.ceil(); // rounds up
Math.floor(); // rounds down
Math.round(); // does method 2 in 1 call

//method 2
var number = 1.5; //float
var a = parseInt(number); // to int
number -= a; // get numbers on right of decimal

if(number < 0.5) // if less than round down
    round_down();
else // round up if more than
    round_up();

um ou uma combinação resolverá sua dúvida


10
total = Math.round(total);

Deve fazer isso.


8

Use Math.roundpara arredondar o número para o inteiro mais próximo:

total = Math.round(x/15*100);

4

uma solução muito sucinta para arredondar um flutuador x:

x = 0|x+0.5

ou se você só quer pisar no chão

x = 0|x

isso é um bit a bit ou com int 0, que descarta todos os valores após o decimal

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.