Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Roccon

Soma de dois número, resultando sempre com 2 casas decimais

Recommended Posts

Olá galera, primeiramente bom dia à todos e obrigado por se interessarem no tópico.

 

Bom, vamos lá. Eu possuo um jQuery que soma 2 números, que podem conter casas decimais.

O meu código está da seguinte forma:

var priceSum = parseFloat(priceTotal) + parseFloat(price);

Porém, algumas somas me retornam números como várias casas decimais, quando eu gostaria que apenas duas estivessem visíveis, como por exemplo:

  • 18.99999999999999999999 -> 18.99
  • 1.5 -> 1.50
  • 45000.59999999999 -> 45000.59

E assim por diante....

 

Alguém teria uma luz de como eu poderia fazer este procedimento?

Desde já agradeço,

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! para isso voce devera usar 2 ferramentas:

 

  • Jquery
  • split

 

Vamos supor que a variavel -> priceSum Retorna o numero:

 

 

45000.59999999999

 

 

Voce devera pegar esse numero e usar a ferramente split! mas o que a ferramenta split faz?

 

http://www.w3schools.com/jsref/jsref_split.asp

 

Agora ficaria no seu caso +/- assim:

 

var corte = priceSum.split(".");

corte[0]; -> armazena na variavel o numero 45000
corte[1]; -> armazena na variavel o numeroo 59999999999999

Voce deve pegar a variavel corte[1] e limitar os caracteres dela para somente 2! e no caso mostrei um alerta:

 

alert(corte[1].substring(0,2));


Agora para mostrar o valor completo use:

 

var valor_1 = corte[0]+"."+corte[1].substring(0,2);
alert(valor_1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Micilini Roll. Primeiramente muito obrigado por se interessar!

 

Legal, gostei do seu método, porém e se o número retornado for 1.5, neste caso ele irá armazenar somente com uma casa decimal. Eu preciso de sempre duas casas decimais porque este valor terá que ser convertido em moeda.

 

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas tem um porem!! e se colocarmos por exemplo: 1.5, ele ainda continuará te retornando este valor! para reverter esse tipo de situação nos iremos fazer o seguinte:

 

  1. Antes de exibir o comando na tela verificar quantos caracteres existem depois do PONTO(.)
  2. Se o numero de caracteres for menor que 2 adiciona-se um 0 , se for maior que 2 deixa queto!

 

Entao vamos lá:

 

<script>
$(document).ready(function() {
var numero = '1.5';
var corte = numero.split(".");
if(corte[1].length == 1){
var valor_1 = corte[0]+"."+corte[1]+"0";
alert(valor_1);
}else{
var valor_2 = corte[0]+"."+corte[1].substring(0,2);
alert(valor_2);
}
});
</script>


No codigo acima:

 

corte[1].length == 1

 

ele verificou quantos caracteres(.length) se for igual a 1 isso quer dizer que somente tem 1 casa decimal! se tiver ele executa o comando abaixo:

 

corte[0]+"."+corte[1]+"0"

 

ele adicona mais 0 no final do codigo e da um alerta!

 

agora se o numero de caracteres for diferente de 1 ou seja isso diz que o n° de carateres é maior que 1 e no caso realiza o processo que expliquei anteriormente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.