none
Problema con Decimales

    Pregunta

  • Hola! Tengo el siguiente problema.

    Tengo este código, pero al NO ser 0 el valor del Form5.total.text, el valor del txtLargoTotal.text no aparece en decimal

    Private Sub btCalcLargo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCalcLargo.Click
            If Form5.total.Text = "0" Then
                ltotal = txtResLong.Text
                txtLargoTotal.Text = Decimal.Round(ltotal, 3)
                btPLoss.Enabled = True
            Else
                ltotal = Val(Form5.total.Text) + Val(txtResLong.Text)
                txtLargoTotal.Text = Decimal.Round(ltotal, 3)
                btPLoss.Enabled = True
            End If
        End Sub

     

    martes, 15 de febrero de 2011 16:51

Respuestas

  • hola

    prueba algo como esto

     

    Private Sub btCalcLargo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCalcLargo.Click
       
        Dim total As Integer = 0
        Int32.TryParse(Form5.total.Text, total)
       
        If total = 0 Then
            Int32.TryParse(txtResLong.Text, total)
        Else
            Dim reslong As Integer = 0
            Int32.TryParse(txtResLong.Text, reslong)
           
            total = total + reslong
        End If
       
        txtLargoTotal.Text = CStr(total)
        btPLoss.Enabled = True
       
    End Sub

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 15 de febrero de 2011 16:58

Todas las respuestas

  • hola

    prueba algo como esto

     

    Private Sub btCalcLargo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCalcLargo.Click
       
        Dim total As Integer = 0
        Int32.TryParse(Form5.total.Text, total)
       
        If total = 0 Then
            Int32.TryParse(txtResLong.Text, total)
        Else
            Dim reslong As Integer = 0
            Int32.TryParse(txtResLong.Text, reslong)
           
            total = total + reslong
        End If
       
        txtLargoTotal.Text = CStr(total)
        btPLoss.Enabled = True
       
    End Sub

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 15 de febrero de 2011 16:58
  • Hola!

    No me sirvió, porque yo quiero que si lo que hay en Form5.total.text es distinto de 0 que en txtLargoTotal.text esté la suma de Form5.total.text + txtResLong.text, pero si es 0 entonces que en txtLargoTotal.text = txtReslong.text

    martes, 15 de febrero de 2011 17:09
  • convierte todos los objectos implicado en decimal para trabajarle como tal, luego para asignarselo a la propiedad text de los controles invoca el metodo ToString(), ejemplo

    Dim ltotal As Decimal = 0
    
    If Convert.ToDecimal(Form5.total.Text) = 0 Then
    	ltotal = Convert.ToDecimal(txtResLong.Text)
    	txtLargoTotal.Text = Decimal.Round(ltotal, 3).ToString()
    	btPLoss.Enabled = True
    Else
    	ltotal = Conversion.Val(Form5.total.Text) + Conversion.Val(txtResLong.Text)
    	txtLargoTotal.Text = Decimal.Round(ltotal, 3).ToString()
    	btPLoss.Enabled = True
    End If

     

     


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    martes, 15 de febrero de 2011 23:17
  • hola

    pero si eso es justamente lo que hace ese codigo, solo que tiene otra tecnica convirtiendo los tipos para que no fallen si tiene valores invalidos

     

    veras que al principio ya se asigna a "total" el valor de Form5.total.Text

    por eso despues se continua con esta variable directamente

    si es cero se asigna ahora a "total" el valor de txtResLong.Text, y eso va directo a txtLargoTotal.Text

    pero sino es cero se pasa el valor de txtResLong.Text a reslong para sumarlo a "total" que ya tenia el valor de Form5.total.Text porque fue asignado al principio, y por ultimo se asigna la suma a txtLargoTotal.Text

     

    prueba de poner breakpoint en el codigo y vers que ese codigo funciona, ademas evita errores si introduces valores que no son validos numericamente

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 15 de febrero de 2011 23:27