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

Roberto Alsina ralsina en netmanagers.com.ar
Jue Feb 27 11:38:40 ART 2014


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



More information about the pyar mailing list