Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: rapbyone en 11 Febrero 2015, 16:25 pm



Título: Evitar redondeo de decimales en textbox
Publicado por: rapbyone en 11 Febrero 2015, 16:25 pm
Estimados, tengo el siguiente código:

Código
  1. Text2.Text = Val(Text1.Text) / 2
  2. Text4.Text = Val(Text3.Text) - Val(Text2.Text)
  3.  


así se ve el formulario:

(http://i38.servimg.com/u/f38/14/27/29/04/sin_ty18.png)

Donde primero divido el "valor 2"  por 2 y el resultado lo resto al "valor 1"

El problema es que el resultado en el text4.text, debería ser 84,5, pero automáticamente redondea el valor a 85.

¿Como evito que el valor se redondeé?
Muchas Gracias


Título: Re: Evitar redondeo de decimales en textbox
Publicado por: Shell Root en 11 Febrero 2015, 16:36 pm
EHN.vbs
Código
  1. Option Explicit
  2.  
  3. Dim var1, var2, var3, var4
  4. var1 = 105
  5. var2 = 41
  6. var3 = 41 / 2
  7. var4 = var1 - var3
  8. MsgBox "Resultado: " & var4

Resultado: 84.5


Título: Re: Evitar redondeo de decimales en textbox
Publicado por: okik en 11 Febrero 2015, 17:15 pm
Código
  1. Dim A As Variant, B As Variant
  2. A = Text1.Text
  3. B = FormatNumber(A / 2, 2) 'No redondea y muestra dos decimales
  4. Text2.Text = B
  5. Text3.Text = CInt(A / 2) 'Redondea
  6. Text4.Text = CVar(A / 2) 'No redondea
  7.  


Usa 'Variant' para evitar el redondeo e 'Integer' para redondear. Para evitar demasiados decimales: 1.6666666667, usa FormatNumber (numero, decimales).

Si no quieres usar variables. Como en el ejemplo anterior, pones:

CVar(valor) <----No redondea
CInt(valor) <---Redondea




Título: Re:
Publicado por: rapbyone en 11 Febrero 2015, 17:49 pm
Se pasaron muchas gracias

Enviado desde mi LG-D805 mediante Tapatalk


Título: Re: Evitar redondeo de decimales en textbox
Publicado por: rapbyone en 11 Febrero 2015, 19:40 pm
¿Estimados y para aproximar un decimal, por ejemplo si tengo "76,5" me muestre 77?


Título: Re: Evitar redondeo de decimales en textbox
Publicado por: okik en 11 Febrero 2015, 19:57 pm
¿Estimados y para aproximar un decimal, por ejemplo si tengo "76,5" me muestre 77?


No he encontrado ninguna función para eso, no se si habrá. Puedes usar este sencillo código:

Código
  1. Dim A As Variant, B As Variant
  2. A = 76.5
  3. B = A - Int(A)
  4. If B = 0.5 Then
  5. A = A - 0.5 + 1
  6. End If
  7.  
  8. Label1.Caption = A

Lo que hace es lo siguiente:

A= 76.5  '//mete el valor en A
B = A - Int(A) '//B= 76.5 - 76 = 0.5
if B= 0.5 then  '//Si B es igual a 0.5 entonces....
A= A- 0.5+1  '// A= 76.5 - 0.5+1
End If

Label1.Caption = A '//Muestra el valor de A = 77






Título: Re: Evitar redondeo de decimales en textbox
Publicado por: engel lex en 11 Febrero 2015, 20:39 pm
solo para aportar algo... se puede simplificar el código de okik para ahorrarnos la comparación

Código
  1. Dim A As Variant
  2. A = 76.5
  3. A = Int(A+0.5)
  4. Label1.Caption = A


Título: Re: Evitar redondeo de decimales en textbox
Publicado por: okik en 12 Febrero 2015, 17:32 pm
solo para aportar algo... se puede simplificar el código de okik para ahorrarnos la comparación

Código
  1. Dim A As Variant
  2. A = 76.5
  3. A = Int(A+0.5)
  4. Label1.Caption = A

Te había rectificado, pero  tu ejemplo es mucho mejor. Está genial  ;-). No me di cuenta que pusistes int() y te dije que si A =78 entonces el label daría 78.5. Esto es lo que pasa cuando un va de listo y resulta que soy medio listo  :P.