Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2010, 11:37
refreegrata
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 3 meses
Puntos: 27
duda con decimal, float

Hola lista. Tengo una duda. Estoy formando un diccionario:
Código PHP:
diccionario['sumaSubtotal'] = cursor.fetchone()[0] <--- lo obtengo de la base de datoses un Decimalpuesto que representa a un campo del tipo numeric.

diccionario['sumaDescuento'] = round(diccionario['sumaSubtotal']*self.descuento_porcentaje/100)

diccionario['sumaTotal'] = diccionario['sumaSubtotal'] - diccionario['sumaDescuento'
Esto me lanza una excepcion "unsupported operand type(s) for -: 'Decimal' and 'float'"

Debido a que al aplicar el round en dicc...['sumaDescuento'] se transforma de Decimal a float.
Es posible, de alguna forma evitar que se transforme de Decimal a float al aplicar el round???

Se que también podría pasarlo a str y después a decimal, o pasarlo a long operar y despues volverlo a float para quede no que de forma ilegible, pero quería saber si hay alguna forma más limpia de hacerlo.

A propósito, otra duda. Para python hay alguna diferencia al trabajar con decimal o float?Lo digo por que yo he observado en bases de datos postgreSQL que cuando se trabaja con números grandes es más seguro usar numeric, debido a que las aproximaciones con otros tipos de datos como decimal son más inexactas.

P.D:Bueno, tal véz, como uso valores redondeados, quizás da lo mismo de los números decimales.

Saludos.

Última edición por refreegrata; 16/12/2010 a las 11:51