Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Separar milhar e decimal

Professor,

Estou "brincando" com alguns dos exemplos dados durante o curso e, em certo momento, um dos meus cálculos deu o valor de 2632199278.6291.

Todavia, eu gostaria que o número fosse calculado da seguinte forma: 2.632.199.278,63. É possível fazer essa transformação?

Outra dúvida: minha intenção é tentar desenvolver um programa estatístico em java. Esses conceitos iniciais irão me ajudar ou é aconselhável partir diretamente para o curso de JAVA da alura?

Obrigado antecipadamente. Eduardo

5 respostas

Oi Eduardo! Li sua pergunta mas não vou conseguir responder agora. Mas já adianto que a lógica para resolver o problema do milhar pode ser aplicado em Java também. Mas para ficar com milhar o número terá que ser um texto.

Ah, só um detalhe: em Java, você usará as API´s da linguagem que o auxiliaram a fazer isso. Ou seja, a solução de JavaScript que você vai usar é apenas para exercitar lógica, pois em Java, apesar da lógica ser necessária ele possui bibliotecas (APIS) que realizam a formatação de números auxiliando grandemente essa tarefa. Beleza.

Ainda assim, você quer uma solução usando o que aprendeu de lógica no curso de lógica? Eu evitarei ao máximo usar APIS do JavaScript e tentarei usar as estruturas básicas de lógica que você aprendeul

solução!

Essa aqui e uma solução, tentando ao máximo usar apenas o que você aprendeu no curso de lógica. Lembre-se que o curso é de lógica, não é para aprender a fundo a linguagem JavaScript. Contudo, tive que usar alguns recursos da linguagem JavaScript para resolver o problema.

Isso pode ser resolvido de outras formas, mas dependerá de um conhecimento mais profundo da linguagem JavaScript:

        var numero = "12345.10"; // 12.543,10
        // extrai a parte inteira
        // numero.indexOf encontra a posição onde o ponto aparece
        // numero.substring extrai de 0 até a posição que  ponto aparece, mas sem incluir a posição do ponto 
        var inteiro = numero.substring(0, numero.indexOf("."));

        // extrai a parte decimal
        var decimal = numero.substring(numero.indexOf(".")+1);

        // agora, vamos varrer do final para o início e contar de 3 em três e colocar um ponto
        // Como estamos varrendo da direita para esquerda, o resultado será um número invertido, por exemplo 543.21

        var inteiroInvertido = ""
        // para ajudar a contar de 3 em 3
        var contador = 1;

        for(var i = inteiro.length -1; i >=0 ; i--) {

            // Podemos pegar cada letra da string como se fosse um array!
            inteiroInvertido = inteiroInvertido + inteiro[i];
            // é para colocar ponto
            if(contador == 3) {
                inteiroInvertido = inteiroInvertido + ".";
                contador = 1;
            } else {
                contador++;
            }

        }

        // agora, precisa reverter o número inteiro
        alert(inteiroInvertido);
        var inteiroFinal = "";

        for(var i = inteiroInvertido.length -1; i >=0 ; i--) {

            inteiroFinal = inteiroFinal + inteiroInvertido[i];
        }

        alert("Número convertido: " + inteiroFinal + ',' +
         decimal);

Obrigado pelos esclarecimentos, Flávio! Um abraço!

Beleza Eduardo, agora é continuar os estudos. E lembre-se: "existem 1000 maneiras de se fazer Neton, invente a sua!" Não sei se você é da época desse slogan :)