[pyar] Transformación de floats de 4-bytes a 8-bytes

Enrique Martín enri57ar en gmail.com
Jue Feb 27 12:14:35 ART 2014


Encontré una solución (sabiendo que el "Single" de MSAccess tiene una
precision de 7)

>>> from decimal import *
>>> getcontext().prec = 7
>>> Decimal("4.10699997e+01").normalize()
Decimal('41.07')
>>> Decimal("4.12109985e+01").normalize()
Decimal('41.211')
>>> Decimal("4.12999992e+01").normalize()
Decimal('41.3')


2014-02-27 12:01 GMT-03:00 Enrique Martín <enri57ar en gmail.com>:
> Gracias Roberto.
> Habrá alguna forma de ahorrame el string formatting?
>
> 2014-02-27 11:38 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar>:
>> On 27/02/14 11:34, Enrique Martín wrote:
>>>
>>> Hola a todos, Les cuento:
>>>
>>> MSAccess tiene un tipo de datos "Single" que es un float de 4-bytes, ej:
>>> a) 41.07
>>> b) 41.211
>>> c) 41.3
>>>
>>> Cuando los saco tanto por pyodbc, mdbtools (windows y linux x86_64)
>>> obtengo las siguiente reprensentaciones:
>>>
>>> a) 41.0699996948, 4.10699997e+01, 41.070000
>>> b) 41.2109985352, 4.12109985e+01, 41.210999
>>> c) 41.2999992371, 4.12999992e+01, 41.299999
>>>
>>> para volver a la representacion original tengo que hacer esto, en los
>>> 9 casos anteriores funciona:
>>>
>>>>>> "%g" % 41.0699996948
>>>
>>> '41.07'
>>>>>>
>>>>>> "%g" % 4.12109985e+01
>>>
>>> '41.211'
>>>>>>
>>>>>> "%g" % 41.299999
>>>
>>> '41.3'
>>>
>>> pero en algunos casos cuando los paso a floats de python (8-bytes) pasa
>>> esto:
>>>
>>>>>> float("41.211")
>>>
>>> 41.210999999999999
>>>>>>
>>>>>> float("41.3")
>>>
>>> 41.299999999999997
>>> A alguien se le ocurre como pasar de los floats de 4-bytes a los
>>> floats de python con la misma "representacion"?
>>>
>>> PD: Si, los calculos que hago tienen que ser muy precisos, asi es el
>>> requerimiento.
>>>
>>
>> usá decimal:
>>
>>>>> d=Decimal("41.3")
>>>>> float(d)
>> 41.3
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar


More information about the pyar mailing list