none
Necesito ayuda! RRS feed

  • Pregunta

  • Estoy programando en windows Form, tengo una respuesta en una label, tengo la otra en otro label, y necesito dividirlas y multiplicarlas por 100, como hago para poder tomarlas como numéricas y realizar la operación?
    miércoles, 16 de marzo de 2016 7:52

Respuestas

  • Si. Siempre que b sea mayor que a el resultado será 0.

    Estás capturando los labeles como valores enteros. 

    Cuando haces innecesariamente aritmética con enteros, primero multiplicas y luego divides. Siguiendo el ejemplo de tximas, deberías hacer

    int resultado = 100 * a / b;
    Los paréntesis son innecesarios. Los operadores * y /, son asociativos por la izquierda. Si pones paréntesis en (a/b) para rehacer la asociación, el resultado será 0 si b>a.

    • Propuesto como respuesta tximas jueves, 17 de marzo de 2016 13:01
    • Marcado como respuesta José De AlvaModerator miércoles, 23 de marzo de 2016 17:52
    jueves, 17 de marzo de 2016 12:35

Todas las respuestas

  • Buenas,intentas realizandolo con variables y luego pasandole el valor a cada label?y mismo realizas la operación con las variables
    miércoles, 16 de marzo de 2016 8:11
  • Ya lo intente y nada:c
    miércoles, 16 de marzo de 2016 8:42
  • Hola Vidal,

    si nos enseñas tu código será más fácil que te podamos ayudar.

    En principio debería bastar con que utilizaras un decimal.TryParse.

    Por ejemplo, para multiplicar los valores por 100:

                decimal valor1;
                decimal valor2;
                if (decimal.TryParse(Label1.Text, out valor1))
                {
                    valor1 = valor1*100;
                }
                if (decimal.TryParse(Label2.Text, out valor2))
                {
                    valor2 = valor2*100;
                }
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 16 de marzo de 2016 9:15
  • Si tienes dos label, tienes que guardar los dos valores de las dos label guardarlas en dos variables.

    int a = Convert.ToInt16(label1.text);

    int b = Convert.ToInt16(label2.text);

    int resultado = (a /b)x100;

    Y si quieres puedes asiganarle a otro label el resultado -> label3.text = Convert.ToString(resultado);

    No olvides marcar la respuesta como valida y sumar puntos. Compartir es vivir!

    Tximas 

    miércoles, 16 de marzo de 2016 10:39
  • Bien. ya hice eso y la respuesta es igual a 0 siempre.

    de todas las formas que lo e hecho, siempre es igual a 0.

    miércoles, 16 de marzo de 2016 15:47
  • int numero1 = Convert.ToInt32(label1.Text);
                int numero2 = Convert.ToInt32(label2.Text);
                int resultado;
                resultado = (numero1 / numero2) * 100;
                label3.Text = Convert.ToString(resultado);

    En principio con este codigo deberia de funcionar. Pero mira algun tutorial de c# porque estas cosas son muy sencillas y las deberias de saber.

    Un saludo y animo!

    jueves, 17 de marzo de 2016 11:37
  • hola

    >>ya hice eso y la respuesta es igual a 0 siempre

    imagino estas usand el int.TryParse() o decimal.TryParse(), si esto resuelve cero quiere decir que el valor que ingresas no es numerico

    si pones un breakpoint en el codigo he inspeccionas el valor que asignas cuando usas

    if (decimal.TryParse(Label1.Text, out valor1))
    {
        valor1 = valor1*100;
    }

    puede validar que ingresa al if ? inspecciona el valor del Label, deberia tener un valor numerico valido

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 17 de marzo de 2016 11:41
  • Si. Siempre que b sea mayor que a el resultado será 0.

    Estás capturando los labeles como valores enteros. 

    Cuando haces innecesariamente aritmética con enteros, primero multiplicas y luego divides. Siguiendo el ejemplo de tximas, deberías hacer

    int resultado = 100 * a / b;
    Los paréntesis son innecesarios. Los operadores * y /, son asociativos por la izquierda. Si pones paréntesis en (a/b) para rehacer la asociación, el resultado será 0 si b>a.

    • Propuesto como respuesta tximas jueves, 17 de marzo de 2016 13:01
    • Marcado como respuesta José De AlvaModerator miércoles, 23 de marzo de 2016 17:52
    jueves, 17 de marzo de 2016 12:35