Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Problema Con La Variable Float

Problema Con La Variable Float
Artículo
Responder citando    Descargar mensaje  
Mensaje Problema Con La Variable Float 
 
Hola comunidad.
 
 Si escribo el siguiente código y lo ejecuto me salen unos valores que no entiendo aunque pueda parecer simple a primera vista.

 Dim a as Float
 Dim b as Float

 a=96.02
 b=Frac(a)

 Print b
 Print b-0.02
 


El resultado que me muestra es -3,9794556538908E-15 cuando en realidad lo lógico parece que sería 0. Si cambio el tipo de datos a Single, b pasa a tener un valor de 0,0199966 y b-0.02 es de -3,3569335937504E-6. ¿Por qué salen estos resultados?  Estoy usando gambas 3.2.1.

Muchas gracias.



 
Guizans - Ver perfil del usuario Enviar mensaje privado  
Guizans [ Miercoles, 15 Agosto 2012, 18:10 ]
 


Problema Con La Variable Float
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Problema Con La Variable Float 
 
Guizans:

Se debe a las conversiones internas que hace el ordenador, los humanos trabajamos con sistema decimal, pero el ordenador trabaja con sistema binario. Al convertir los números algunos no quedan exactos (se producen infinitos decimales) en las conversiones...Por eso da esos números.

De todos modos, piensa que  -3,9794556538908E-15  es prácticamente 0, ya que es realmente -0.0000000000000003979

Cuando utilices float, también añadile Round() que es una función que redondea al numero de decimales que le indiques:
Citar:

PRINT Round(b - 0.02, -10) 'redondea hasta el décimo decimal


Fíjate que ahora el resultado es el esperado

Saludos

Nota:
Enlace a la documentacion gambas.doc sobre Round Enlace
wiki sistema binario Enlace



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Jueves, 16 Agosto 2012, 09:40 ]
Responder citando    Descargar mensaje  
Mensaje Re: Problema Con La Variable Float 
 
Muchas gracias por responder.

Me ha quedado claro.

Un saludo.



 
Guizans - Ver perfil del usuario Enviar mensaje privado  
Guizans [ Jueves, 16 Agosto 2012, 13:57 ]
Responder citando    Descargar mensaje  
Mensaje Re: Problema Con La Variable Float 
 
Estuve probando, pero sin suerte..... intento hacer cuentas con un float para bitcoins, con lo cual tendrán 8 decimales.... el caso es que a partir del 6º decimal, tambien me lo muestra en esa notacion, que si bien sirven para hacer las cuentas, no para mostrar los resultados...... alguna forma de formatearlo?

probé:
Print Round(CFloat(txtPrecio.Text), -8)




 
última edición por CanihoJR el Martes, 24 Abril 2018, 21:01; editado 1 vez 
CanihoJR - Ver perfil del usuario Enviar mensaje privado  
CanihoJR [ Martes, 24 Abril 2018, 21:01 ]
Responder citando    Descargar mensaje  
Mensaje Re: Problema Con La Variable Float 
 
CanihoJR:

Mirate la funcion format

http://gambaswiki.org/wiki/cat/userformat



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Miercoles, 25 Abril 2018, 18:49 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron