Visual Basic.NET - PROBLEMA CON DECIMALES (2)

 
Vista:
Imágen de perfil de edgardo
Val: 54
Ha aumentado su posición en 13 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

PROBLEMA CON DECIMALES (2)

Publicado por edgardo (17 intervenciones) el 01/09/2020 16:29:42
Hola gente: estoy programando en VB:net 2010 como lo dije en otro mensaje y tengo la siguiente duda:

tengo 5 textbox con nombres
Tcan : es la cantidad (valor 1)
Tpu: precio unitario (valor 12.53)
Tdes: porcentaje de descuento valor ( 10.5)
Tdescpesos: total de descuento en valores valor(1.32)
Ttotal: total gral valor ( la gran duda.....)

ahora hago los cálculos y hay uno que da bien y el resto mal y NO SE PORQUE SI ALGUIEN ME DICE COMO TRABAJA ESTE VB, SE LO AGRADEZCO (era tan fácil en clipper ......)

1
2
3
4
5
Ttotal.Text = (Val(Tcan.Text) * Val(Tpu.Text)) - Val(TDescpesos.Text)   '   DA MAL $ 11.53 ....
 
Ttotal.Text = (Val(Tcan.Text) * Val(Tpu.Text)) - CType((TDescpesos.Text), Double)  ' DA BIEN 11.21
 
Ttotal.Text = (CType((Tcan.Text), Double) * CType((Tpu.Text), Double)) - CType((TDescpesos.Text), Double) ' DA MAL  1251.68

TODO ESTO DENTRO DE ESTE CODIGO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Tdes_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tdes.TextChanged
    TDescpesos.Text = Math.Round((Val(Tpu.Text) * Val(Tdes.Text)) / 100, 2)
 
    ''' DA MAL
    'Ttotal.Text = (Val(Tcan.Text) * Val(Tpu.Text)) - Val(TDescpesos.Text)
 
    '''  DA BIEN
    'Ttotal.Text = (Val(Tcan.Text) * Val(Tpu.Text)) - CType((TDescpesos.Text), Double)
 
    '''' MAL
    Ttotal.Text = (CType((Tcan.Text), Double) * CType((Tpu.Text), Double)) - CType((TDescpesos.Text), Double)
 
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PROBLEMA CON DECIMALES (2)

Publicado por Fernanda (27 intervenciones) el 01/09/2020 17:06:07
No entiendo cual es tu pregunta?

De todas formas podrías pasar los valores a variables integer y double antes de calcular
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de edgardo
Val: 54
Ha aumentado su posición en 13 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

PROBLEMA CON DECIMALES (2)

Publicado por edgardo (17 intervenciones) el 01/09/2020 18:23:14
Hola Fernanda: Gracias por responder, la pregunta es como trabaja VB con los ejemplos que escribi? es decir por que en un ejemplo usando CType() con un valor la formula da bien el resultado, y en la otra usando CType() en los 3 valores da resultado erroneo?
quiero entender la lógica y encontrar un resultado correcto.
voy a probar con las variables como decis y te comento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

PROBLEMA CON DECIMALES (2)

Publicado por Phil Rob (937 intervenciones) el 01/09/2020 17:15:41
Hola Edgardo,

No me crees ? El problema viene de los cambiados entre punto y coma.

Cuando pones el buen separador en todos TextBox,obtenes el buen resultado.

Utilisa el codigo siguiente, siempre es bien porque reemplaza la coma por el punto si necesario (mira a imagen).

1
2
3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Ttotal.Text = (CType(Tcan.Text.Replace(",", "."), Double) * CType(Tpu.Text.Replace(",", "."), Double)) - CType(Tdescpesos.Text.Replace(",", "."), Double) ' DA MAL 1251.68
End Sub

VBTest

Atencion, mezclas VB 6.0 (o VBA) y VB.net. No est bien.
Val es una funcion VB 6.0 y CType es una funcion VB.Net.



Veo el mensaje de Fernanda, tiene razón, ya estaría mas lisible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.196
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

PROBLEMA CON DECIMALES (2)

Publicado por Phil Rob (937 intervenciones) el 01/09/2020 17:49:26
Continuación ...

Con el comentario de Fernanda, he escrito el código siguiente :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
    Dim Vcan As Double
    Dim Vpu As Double
    Dim Vdes As Double
    Dim Vdescpesos As Double
    Dim Vtotal As Double
 
    Vcan = CType(Tcan.Text.Replace(",", "."), Double)
    Vpu = CType(Tpu.Text.Replace(",", "."), Double)
    Vdes = CType(Tdes.Text.Replace(",", "."), Double)
 
    If Tdescpesos.Text = String.Empty Then
        Vdescpesos = Vpu * Vdes / 100
        Tdescpesos.Text = String.Format("{0:##0.00}", Vdescpesos)
    Else
        Vdescpesos = CType(Tdescpesos.Text.Replace(",", "."), Double)
    End If
 
    Vtotal = Vcan * Vpu - Vdescpesos
    Ttotal.Text = String.Format("{0:##0.00}", Vtotal)
 
End Sub

Espero que este te ayudará ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de edgardo
Val: 54
Ha aumentado su posición en 13 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

PROBLEMA CON DECIMALES (2)

Publicado por edgardo (17 intervenciones) el 02/09/2020 00:13:36
Gracias Phil nuevamente, me has solucionado el problema.
10 puntos..................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar