Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema al extarer datos de acces
#1
Hola , tengo una conexion puente hecha en python entre access y mysql , pues bien me ha surgido un problema , cuando leo un numero como por ejemplo 0.10000000149011612 la lectura y extraccion la hace bien , pero a la hora de insertar el dato en mysql pone 0.10000000149 , supongo que es por el tamaño maximo del tipo de datos , pero no se como hacer que a sql le inserte el numero largo , cuando muestro el contenido del campo en concreto de access sale todo el numero , pero si hago un print del dato en concreto print midato[0][94] me pone el corto , alguna idea de como solucionarlo ?

[(0.10000000149011612, )] dato que viene del SELECT Auxiliar1 FROM MAQUINAS WHERE IdMaquina=1

0.10000000149 dato que imprime desde midato[0][0]
Responder
#2
Hola. Este es un problema que no se limita a Python, sobre cómo se manejan los números de coma flotante. En Python podés usar el módulo decimal para obtener representaciones un tanto más exactas que con el tipo incorporado float.

Código:
>>> from decimal import Decimal
>>> a = Decimal(0.10000000149011612)
>>> print(a)
0.100000001490116119384765625

Te recomiendo que leas algunos artículos del tema, como éste (en inglés), que explica cuál es la razón por la que:

Código:
>>> 0.1 + 0.2
0.30000000000000004

y otros detalles interesantes.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Gracias , me ha servido de mucho , pero ahora me surge otro caso , leo 32.3491 , pero necesito 32.35 , como lo hago ?
es decir , necesito pasar de float a double con redondeo
Responder
#4
En ese caso, si d = Decimal("32.3491") entonces:

Código:
>>> from decimal import Decimal, ROUND_UP
>>> d.quantize(Decimal(".01"), ROUND_UP)
Decimal('32.35')

(De forma similar puedes usar ROUND_DOWN).

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)