none
Formato de numeros

    Pregunta

  • Como se formatean numeros. Por ejemplo si quiero que aparezcan 2 cifras a la izqueierda de la como y 3 cifras a la derecha, independientemente del tipo de numero (short, int, single, etc).

    Muchas gracias desde ya.
    saludos
    martes, 14 de abril de 2009 15:12

Respuestas

  • Para formatear un número lo tenes que hacer con  string.Format. Lo mismo te sirve para fechas y otros formatos depende de como configures al patrón.
    string unNumero;
    
    unNumero = "100000.2300";
    
    unNumero = string.Format("{0:###,###,###,##0.00##}", Decimal.Parse(unNumero));
    
    
    
    de esta forma en la variable unNumero te quedaría

    100,000.23

    Podes ver más info aca:
    http://msdn.microsoft.com/en-us/library/fht0f5be.aspx
    http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

    Saludos.

    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    martes, 14 de abril de 2009 17:44
  • :-)
    Hola,

    En ese caso deberás hacer tu propia rutina de conversión. En función de lo que le llegue, lo evalúas y devuelves un valor numérico.
    De todos modos ándate con ojo, que si le das la posibilidad a los usuarios de que introduzcas cualquier valor, a la larga (o a la corta) te vas a encontrar con 'sorpresitas'.

    > Para Jonathan: no entiendo de donde sale el 120.00.

    Se supone que el usuario ha introducido 120 en el campo de texto.

    > Para Sandro: Me gustaría que me expliques, si no es mucha molestia, que significan los "00" y los "##"

    Un # singifica un carácter numérico. si no hay carácter no mostrará nada.
    Un 0 singifica un carácter numérico. si no hay carácter mostrará 0.

    Por ejemplo:

    float x = 150,668;

    Aplicando este formato: #,###.0000 (el punto es el separador decimal)

    El resultado es: 150,6680 porque le hemos puesto cuatro ceros después del símbolo decimal.
    Saludos,

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

    miércoles, 15 de abril de 2009 11:38
    Moderador
  • :-)
    Ok,

    Prueba con esto:

    private decimal TruncateDecimal(double value, double decimals)
            {
                double factor = Math.Pow(10, decimals);
                if (factor <= 0) factor = 1;
                return Math.Truncate((decimal)(value * factor)) / (decimal)factor;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                double x = 1234.567894987654321;
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine(TruncateDecimal(x, i));                
                }
            }

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

    miércoles, 15 de abril de 2009 16:00
    Moderador

Todas las respuestas

  • Hola Anti-Work
    si pudieras decirnos donde visaulizas estos numeros y como obtines los numero se te agrade


    una solucion rapida seria la siguiente:

    tu tienes un textbox don de ingresas el numero y quieres visualizar la cantidad en un label
    string numero = textbox.text;
    
    label.text =  numero.format("{0:C"};
    
    //el resultado sera 120.00
    te dejo los otros formatos que de los que me acuerdo
    Decimal  {0:D}
    Scientifico  {1:E}
    General  {0:G}
    Numerico {0:N}
    Percentaje  {1:P}
    Hexadecimal  {0:X}

    espero tu respuesta
    y de igual manera espero que te sirva este ejemplo


    Jonathan Romero Especialista .Net Blog: seguridad y programacion
    martes, 14 de abril de 2009 17:44
  • Para formatear un número lo tenes que hacer con  string.Format. Lo mismo te sirve para fechas y otros formatos depende de como configures al patrón.
    string unNumero;
    
    unNumero = "100000.2300";
    
    unNumero = string.Format("{0:###,###,###,##0.00##}", Decimal.Parse(unNumero));
    
    
    
    de esta forma en la variable unNumero te quedaría

    100,000.23

    Podes ver más info aca:
    http://msdn.microsoft.com/en-us/library/fht0f5be.aspx
    http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

    Saludos.

    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    martes, 14 de abril de 2009 17:44
  • Hola. Muchas gracias a ambos por sus respuestas.

    Lo que trato de hacer es formatear calificaciones de materias.
    Es para una institución que cambia constantemente la metodología de evaluación. Así que quiero que la aplicacion ofrezca al usuario varias opciones para crear los "Regimen de Evaluacion". Estos Regimen de Evaluacion proporcionaran todos los parametros necesarios para calcular: la nota final, los promedios, etc.
    La notas pueden ser numeros enteros, decimales, cadenas de texto, alguna enumeración (ej: mal, regular, bien, muy bien), etc.
    Por lo tanto las notas, lo más probable es que se reciban por medio parametros de tipo string, el cuál habrá que convertir cuando corresponda y formatear su presentación.

    Ejemplos de notas posibles:
    n==06.65
    n==07.00
    n==Baja
    n==Libre
    n==Bueno
    n==Aprobado

    Para Jonathan: no entiendo de donde sale el 120.00. Pero me parece que es lo que necesito: que haya siempre 2 cifras después del simbolo decimal, ya sean números o ceros. Por ejemplo si la nota es 5, formatearla a "05.00"

    Para Sandro: Me gustaría que me expliques, si no es mucha molestia, que significan los "00" y los "##" después del simbolo decima.

    Muchas gracias desde ya.

    Saludos

     
    miércoles, 15 de abril de 2009 4:11
  • :-)
    Hola,

    En ese caso deberás hacer tu propia rutina de conversión. En función de lo que le llegue, lo evalúas y devuelves un valor numérico.
    De todos modos ándate con ojo, que si le das la posibilidad a los usuarios de que introduzcas cualquier valor, a la larga (o a la corta) te vas a encontrar con 'sorpresitas'.

    > Para Jonathan: no entiendo de donde sale el 120.00.

    Se supone que el usuario ha introducido 120 en el campo de texto.

    > Para Sandro: Me gustaría que me expliques, si no es mucha molestia, que significan los "00" y los "##"

    Un # singifica un carácter numérico. si no hay carácter no mostrará nada.
    Un 0 singifica un carácter numérico. si no hay carácter mostrará 0.

    Por ejemplo:

    float x = 150,668;

    Aplicando este formato: #,###.0000 (el punto es el separador decimal)

    El resultado es: 150,6680 porque le hemos puesto cuatro ceros después del símbolo decimal.
    Saludos,

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

    miércoles, 15 de abril de 2009 11:38
    Moderador
  • Hola, Lluis Franco.

    Clarísima tu explicación.
    Una duda más, que me olvidé de plantear, si formateamos 7.755 usando el formato "00.00". Supongo que el resultado será 07.76 Y si quisiera que me trunque (en vez de redondear) con dos decimales ¿hay alguna función para eso?.

    Muchas gracias.
    Saludos
    miércoles, 15 de abril de 2009 15:09
  • :-)
    Ok,

    Prueba con esto:

    private decimal TruncateDecimal(double value, double decimals)
            {
                double factor = Math.Pow(10, decimals);
                if (factor <= 0) factor = 1;
                return Math.Truncate((decimal)(value * factor)) / (decimal)factor;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                double x = 1234.567894987654321;
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine(TruncateDecimal(x, i));                
                }
            }

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

    miércoles, 15 de abril de 2009 16:00
    Moderador