none
Decompor Número tipo decimal

    Question

  • Olá galera.

    Estou com uma dificuldade ai vai.

    tenho um número por exemplo 25,5

    Eu quero separa-lo da sequinte forma 20.;5; 0,5 em variaveis diferents ,independente do número de digitos, podendo ser 1255 ficaria 1000,200,50,5  ou 1,55 ai ficaria 1 0,5 e 0,05

    Alguem pode me ajudar ai ?

    Thursday, February 07, 2013 2:42 PM

Answers

  • Criei 2 funções para ajudar melhor. 

    a primeira simplesmente divide o numero (em string) com seu separador pra verificar quantas partes

    deverão ser processadas.

    A segunda função gera o numero de forma doida que você precisa passando a parte 1
    e depois a parte 2 do numero.

    Para utilizar será desse forma:

     MessageBox.Show(FormatarNumeroDeFormaDoida("1255,89", ','));

            public string FormatarNumeroDeFormaDoida(string numero, char separadorDecimal)
            {
                string parte1 = string.Empty;
                string parte2 = string.Empty;
    
                parte1 = numero.Split(separadorDecimal)[0];
                
                if (numero.Contains(separadorDecimal))
                    parte2 = numero.Split(separadorDecimal)[1];
    
                parte1 = FormatarNumeroDeFormaDoidaCalculo(parte1);
                parte2 = FormatarNumeroDeFormaDoidaCalculo(parte2);
    
                string retorno = parte1;
                if (!string.IsNullOrEmpty(parte2))
                    retorno += ";" + parte2;
    
                return retorno;
    
            }
    
            private string FormatarNumeroDeFormaDoidaCalculo(string numero)
            {
                string retorno = string.Empty;
                if (string.IsNullOrEmpty(numero))
                    return numero;
    
    
                for (int i = 0; i < numero.Length; i++)
                {
                    retorno = retorno + numero[i].ToString().PadRight(numero.Length - i, '0');
                    if (i < numero.Length-1)
                        retorno += ";";
                }
                return retorno;
            }
    


    Desenvolvedor de sistemas VB6, ASP, ASP.NET, C#, VB.NET, SQL Server, Oracle e MySql.

    Monday, February 11, 2013 1:08 AM
  • http://stackoverflow.com/questions/8026600/split-double-into-two-int-one-int-before-decimal-point-and-one-after

    A flower cannot blossom without sunshine, and man cannot live without love.

    Sunday, February 10, 2013 6:14 PM
    Moderator

All replies

  • http://stackoverflow.com/questions/8026600/split-double-into-two-int-one-int-before-decimal-point-and-one-after

    A flower cannot blossom without sunshine, and man cannot live without love.

    Sunday, February 10, 2013 6:14 PM
    Moderator
  • Criei 2 funções para ajudar melhor. 

    a primeira simplesmente divide o numero (em string) com seu separador pra verificar quantas partes

    deverão ser processadas.

    A segunda função gera o numero de forma doida que você precisa passando a parte 1
    e depois a parte 2 do numero.

    Para utilizar será desse forma:

     MessageBox.Show(FormatarNumeroDeFormaDoida("1255,89", ','));

            public string FormatarNumeroDeFormaDoida(string numero, char separadorDecimal)
            {
                string parte1 = string.Empty;
                string parte2 = string.Empty;
    
                parte1 = numero.Split(separadorDecimal)[0];
                
                if (numero.Contains(separadorDecimal))
                    parte2 = numero.Split(separadorDecimal)[1];
    
                parte1 = FormatarNumeroDeFormaDoidaCalculo(parte1);
                parte2 = FormatarNumeroDeFormaDoidaCalculo(parte2);
    
                string retorno = parte1;
                if (!string.IsNullOrEmpty(parte2))
                    retorno += ";" + parte2;
    
                return retorno;
    
            }
    
            private string FormatarNumeroDeFormaDoidaCalculo(string numero)
            {
                string retorno = string.Empty;
                if (string.IsNullOrEmpty(numero))
                    return numero;
    
    
                for (int i = 0; i < numero.Length; i++)
                {
                    retorno = retorno + numero[i].ToString().PadRight(numero.Length - i, '0');
                    if (i < numero.Length-1)
                        retorno += ";";
                }
                return retorno;
            }
    


    Desenvolvedor de sistemas VB6, ASP, ASP.NET, C#, VB.NET, SQL Server, Oracle e MySql.

    Monday, February 11, 2013 1:08 AM