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?

não sei como
fonte

Respostas:

166

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

hmakholm sobrou Monica
fonte
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

Drake
fonte
10
total = Math.round(total);

Deve fazer isso.

Phil
fonte
8

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

total = Math.round(x/15*100);
quiabo
fonte
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

Karo Castro-Wunsch
fonte