Visual Basic - Problema con decimales en el resultado final

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 04/03/2021 18:03:54
Hola, lo primero decir que soy principiante en esto, y tengo el siguiente problema al realizar una multiplicación y dar el resultado final con decimales obviando el 0 de la derecha, es decir, tengo este código en visual basic word 2013:

1
2
3
4
5
6
7
8
9
Private Sub CommandButton5_Click()
Dim a As Double
Dim b As Double
a = CDbl(TextBox3)
b = CDbl(ComboBox1)
TextBox4 = a * b
TextBox4 = Format(TextBox4, "0.0000")
TextBox4 = Int(TextBox4 * 100) / 100
End Sub

Por ejemplo:

Si realizo el cálculo de 0,53 * 0,95 (0,5035 resultado calculadora) el resultado final sale 0,5 y lo que quiero es que sea 0,50, también me pasa con 0,64 * 0,95 (0,608 resultado calculadora) que sale 0,6 y quiero que sea 0,60; no sé si me podrían ayudar.

Muchas gracias.
Un saludo.
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
Imágen de perfil de gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por gilman (359 intervenciones) el 05/03/2021 08:45:38
Sustituye
1
2
3
TextBox4 = a * b
TextBox4 = Format(TextBox4, "0.0000")
TextBox4 = Int(TextBox4 * 100) / 100
por:
1
TextBox4 = Format(a * b, "0.00")
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 05/03/2021 15:26:05
Hola, he hecho lo que has dicho y cuando realizo la operación de 0,64 * 0,95 da resultado 0,61, lo redondea hacia arriba y cuando realizo la de 0,53 * 0,95 da resultado 0,5.
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 gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por gilman (359 intervenciones) el 06/03/2021 09:58:04
0,64 * 0,95 = 0,608 con redondeo a dos decimales 0,61
0,53 * 0,95 = 0,5035 con redondeo a dos decimales 0,50
todo correcto, no entiendo el problema
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
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por Sahid Ra Gutierrez Cruz (191 intervenciones) el 07/03/2021 11:09:02
y si el resultado lo tomas como un MID

1
2
3
4
5
6
7
8
9
Dim a As Double
Dim b As Double
Dim Total As Double
Dim Resultado
a = 0.53
b = 0.95
Total = a * b
Resultado = Mid(CStr(Total), 1, 3) + "0"
MsgBox Resultado
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 gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por gilman (359 intervenciones) el 07/03/2021 11:17:40
eso será si no quiere redondear, y además estás suponiendo que el resultado será siempre menor que 9 en valor absoluto
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 07/03/2021 15:45:00
Hola, lo que quiero es que cuando se realice la operación con el código el resultado sea 0,60, 0,50 o 0,40, y no 0,6, 0,5 o 0,4 como sale, no quiero que redondee, el resto de operaciones que hago y que no acaban en cero salen bien, pero cuando llega a una operación que el segundo decimal es cero lo obvia y me gustaría que el cero saliera también.
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 07/03/2021 20:52:16
Hola, he utilizado el código como MID, y sale el cero (0,50), pero al realizar la operación en el resto de números (0,51, 0,52, 0,54, 0,55, etc.) el resultado no se modifica y sale el mismo resultado de 0,50 para todos.
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
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por Sahid Ra Gutiérrez Cruz (191 intervenciones) el 08/03/2021 00:55:58
Tan sencillo como la línea ocho del código modifica el 1,3 por 1,4 y elimina (+ "0") y listo, felices líneas de programación.
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 08/03/2021 13:05:00
Hola, con esto último me funciona perfectamente.

Muchas gracias.
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
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por sahid ra gutierrez cruz (191 intervenciones) el 08/03/2021 18:03:45
y si sabrías como solucionar si el resultado tuviera decenas, centenas o unidades de mil?
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 30/04/2022 11:49:28
Hola, continuando un poco con el tema, me gustaría saber si con este código:

1
2
3
4
5
6
7
8
Private Sub CommandButton1_Click()
Dim a As Double
Dim b As Double
a = CDbl(TextBox1)
b = CDbl(TextBox2)
TextBox3 = a * b
TextBox3 = Mid(CStr(TextBox3), 1, 4)
End Sub

se podría hacer para que salga el "cero" en los decimales para las siguientes operaciones, ya que en calculadora salen los siguientes resultados, al igual que cuando aplico el código:

1,25 * 0,8 = 1
1,50 * 0,8 = 1,2
1,75 * 0,8 = 1,4
2,00 * 0,8 = 1,6
2,25 * 0,8 = 1,8

es decir, me gustaría que el resultado fuera 1,00 - 1,20 - 1,40 - 1,60 - 1,80, sé que con el código en las operaciones que el resultado sale con más de dos decimales si quedan como quiero, por ejemplo:

1,26 * 0,8 = 1,008 en calculadora, y cuando la hago con el código queda 1,00.
1,51 * 0,8 = 1,208 en calculadora, y cuando la hago con el código queda 1,20.
1,76 * 0,8 = 1,408 en calculadora, y cuando la hago con el código queda 1,40.
2,01 * 0,8 = 1,608 en calculadora, y cuando la hago con el código queda 1,60.
2,26 * 0.8 = 1,808 en calculadora, y cuando la hago con el código queda 1,80.

pero en las anteriores salen tal y como se muestran.

Espero haberme explicado.

Muchas gracias.
Un saludo.
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
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por Sah1d Ra (191 intervenciones) el 01/05/2022 08:16:09
Hola no entendí lo ultimo que pusiste, pero te dejo este ejemplo espero te sirva

1
2
3
4
5
6
7
8
9
10
11
A = 1.25: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 1.5:  B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 1.75: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 2:    B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 2.25: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 
 A = 1.26: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 1.51: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 1.76: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 2.01: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R
 A = 2.26: B = 0.8: R = A * B: MsgBox Format(R, "#.00"), , R

Pon un ejemplo de como quieres los resultados y puede que lleguemos a una
mejor solución.

Saludos y felices líneas de programac10n.
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 01/05/2022 12:23:28
Tengo una tabla que va desde 1,01 hasta 2,45 que tengo que multiplicar por 0,8, para no extenderme mucho pongo sólo un ejemplo, es decir:

Si hago la multiplicación en la calculadora queda:

1,23 * 0,8 = 0,984
1,24 * 0,8 = 0,992
1,25 * 0,8 = 1
1,26 * 0,8 = 1,008
1,27 * 0,8 = 1,016

Si la hago con el código queda:

1,23 * 0,8 = 0,98
1,24 * 0,8 = 0,99
1,25 * 0,8 = 1
1,26 * 0,8 = 1,00
1,27 * 0,8 = 1,01

Y me gustaría saber cómo se podría hacer para que quedara así:

1,23 * 0,8 = 0,98
1,24 * 0,8 = 0,99
1,25 * 0,8 = 1,00
1,26 * 0,8 = 1,00
1,27 * 0,8 = 1,01

teniendo el mismo problema cuando se realiza la operación para 1,50 - 1,75 - 2,00 - 2,25.

Saludos.
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 Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por Antoni Masana (558 intervenciones) el 02/05/2022 17:58:49
Cambia el formato de las celdas donde va el resultado, dile que es numérico con 2 decimales y problema resuelto.
Un detalle: en el caso:
1
1,26 * 0,8 = 1,008
Excel pondrá: 1,01 en lugar de 1,00.

Para que trunque a dos decimales:
1
=ENTERO(1,26 * 0,80 * 100) / 100
Otra opción:
1
=REDONDEAR.MENOS(1,26 * 0,80 ; 2)

Saludos.
\\//_
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 09/05/2022 12:37:29
Hola, lo tengo en word, no en excel.
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
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por Sah1d Ra (191 intervenciones) el 02/05/2022 18:17:33
Hola

1
2
3
4
5
6
7
8
9
10
11
12
Dim A As Double: Dim B As Double: Dim R As String
 B = 0.8
 A = 1.23: A = A * B: R = CStr(Int(Val(A))) + IIf(InStr(CStr(A), ".") = 0, ".00", Mid(CStr(A), InStr(CStr(A), "."), 3))
 MsgBox R
 A = 1.24: A = A * B: R = CStr(Int(Val(A))) + IIf(InStr(CStr(A), ".") = 0, ".00", Mid(CStr(A), InStr(CStr(A), "."), 3))
 MsgBox R
 A = 1.25: A = A * B: R = CStr(Int(Val(A))) + IIf(InStr(CStr(A), ".") = 0, ".00", "") ' Mid(CStr(A), InStr(CStr(A), "."), 3))
 MsgBox R
 A = 1.26: A = A * B: R = CStr(Int(Val(A))) + IIf(InStr(CStr(A), ".") = 0, ".00", Mid(CStr(A), InStr(CStr(A), "."), 3))
 MsgBox R
 A = 1.27: A = A * B: R = CStr(Int(Val(A))) + IIf(InStr(CStr(A), ".") = 0, ".00", Mid(CStr(A), InStr(CStr(A), "."), 3))
 MsgBox R

en el 1.25 me da un error, pero creo que lo podras resolver de momento ando ocupado ;)
si haces el procedimiento en dos lineas o usas una variable mas seria lo ideal, pero me gusta
resolver con lo minimo.

tambien haria falta cuando el resultado es 1.3 falta validarlo para que quede 1.30, creo este
ultimo con el format quedaria.

saludos y felices líneas de proghramac10n.
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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con decimales en el resultado final

Publicado por David (18 intervenciones) el 09/05/2022 12:40:27
Hola, lo que me gustaría es que el resultado de 1,00 saliera en el textbox del resultado final, ya que luego se tiene que copiar en el campo del word correspondiente.

Saludos.
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