FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Tipo de datos apto para cálculos monetarios
Saludos camaradas, mi pregunta es muy sencilla:
¿Qué tipo de dato es apropiado para almacenar cantidades monetarias en interbase y firebird? Eso es todo... Gracias por sus respuestas.
__________________
Herr Heins Faust |
#2
|
||||
|
||||
__________________
Gracias, Rolphy Reyes |
#4
|
||||
|
||||
Yo uso Numeric(15, 2) y/o Double Precision, realmente en el ultimo que pienso es en el Float, ya que realmente me sucedieron varios disparates con él.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#5
|
||||
|
||||
Cita:
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#6
|
||||
|
||||
yo utilizaba el Float... pero me dio muchos problemas... tanto para la parte visual como el manejo de algunos numeros que no me aceptaba o me los cambiaba... creo que deje algunos post con lo anterior (Interbase)...
cuando se muestra el valor por un DBGrid de un dato que es Float se ve 1588.23999023438 y lo que me debe mostrar es el 1588.24... lo raro es que cuando lo imprimo me aparece bien... pero en fin... el otro problema lo tube con un valor de 127 millones y algo... que la cifra que ingrese no me la aceptaba, y realice varias pruebas y habian 3 o 4 numeros consecutivos que no los tomaba y los cambiaba... pense que era el tope, pero si ponia un numero superior si lo aceptaba... así que me cambie al numeric...bueno,,, todo esto en Interbase 6 Salu2
__________________
BlueSteel |
#7
|
||||
|
||||
Pues yo para la parte visual siempre usaba el DisplayFormat.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#8
|
||||
|
||||
Cita:
__________________
Web |
#9
|
||||
|
||||
bueno... corrigo... no eran con 127 millones.. el error ocurria con 27 millones ($27.220.415)
aquí dejo el hilo (Problema con campo Float en Interbase ) y aquí dejo otro hilo donde realizo una pregunta muy parecida.... ( tipos de datos...cual escojo ? ) salu2
__________________
BlueSteel Última edición por BlueSteel fecha: 01-07-2008 a las 18:35:09. |
#10
|
||||
|
||||
Ahora que lo pienso , si he tenido errores como el que planteas amigo BlueSteel en el primer hilo que mencionas; creia que eran los decimales, me ha pasado de que cuando hago un sum() en una tabla de unos 30.000 registros este me incrementa unos cuantos numeros (Ej: 21.536.450 = 21.536.472) mas o menos, aunque no me implica mayor complicacion en el momento si es de tener en cuenta este pequeño pero molesto detalle para otras eventualidades, ire estudiando los numeric y double precision ... algo nuevo para aprender.
__________________
Web |
#11
|
|||
|
|||
Hola familia.
Bueno creo que los tipos de datos ofrecidos por Interbase / Firebird son suficientes para todas las necesidades en nuestros sistemas, no comparto que motores de bases de datos como mySQL tienen una cantidad exagerada de tipos de datos. Me parece que debemos utilizar para operaciones monetarias un decimal (15,2) pues permite manejar 2 decimales de precision que es lo que normalmente en los sistemas de gestion (contabilidades por ejemplo) se utiliza, o alguno de ustedes ha visto un cheque con tres cifras en la parte decimal ?, pues yo no lo he visto. Los float son para calculo cientifico donde necesitamos manejar cantidad de digitos en la parte decimal, ademas, he observado que quienes utilizan float para sistemas de gestion, cuando se hacen sumatorias encuentran diferencias por la forma en que se maneja el redondeo.
__________________
Luis Fernando Buelvas T. |
#12
|
||||
|
||||
Yo ya había probado con float, pero eso de los decimales me deja consternado, quizás en definiticva el valor más apropiado para cálculos monetarios se el Decima(15,2).
Gracias por sus respuestas compañeros
__________________
Herr Heins Faust |
#13
|
|||
|
|||
aumentar algo a todo esto (ojala haya leido todo) , les comento yo uso numeric(15,2) pero aun me siguen apareciendo esos numeros raros de decimales pero cambie el dialecto a 3 y hay funcionan bien pero cuando quiero crear una nueva tabla y creo un valor integer me sale un error en mi programa diciendo que es de tipo big integer y no me deja trabajar , utilizo firebird 1.5 , delphi 6 e IBX
__________________
IVAND |
#14
|
||||
|
||||
como IVAND yo tambien cambie a numeric(9,2).
con float he tenido (y tengo) muchos problemas de redondeo. pero para un nuevo programa cree la base de datos firebird en dialect 3, desde su inicio y los campos para moneda en numeric(9,2) y no he tenido problemas de redondeo. los tengo en tablas anteriores aunque cambie a dialect 3. segun vi en post anteriores, en dialect 1 es DOUBLE PRECISION y en dialect 3 es INT64 (un integer datatype).se tienen errores de redondeo en dialect 1 la base de datos la cree con IBExpert
__________________
Todos llevamos nuestros demonios a cuestas.. Última edición por gmontes fecha: 10-07-2008 a las 21:09:05. |
#15
|
||||
|
||||
Hola amigos ya leí varios temas y este es el que mas se acerca a lo que quiero, tengo el también el problema con los decimales, uso el tipo de dato decimal(15,2) el cual me funciona muy bien, el problema que tengo es a la hora de comparar 2 cantidades de un calculo con estos datos, las tablas que tengo son ventas y abonos.
tabla ventas .... id integer, subtotal decimal(15,2), pimpuesto decimal(15,2), impuesto computed by (subtotal * impuesto / 100), total computed by (subtotal + impuesto), ...... p/e: id = 1 subtotal = 142.90 pimpuesto = 15 impuesto = 21.435 total = 164.335 en delphi con la propiedad displayformat el total lo muestro como $164.30 tabla abonos ....... id_venta integer, monto decimal(15,2) ....... p/e: id_venta = 1 monto = 164.30 visualmente esta bien el cliente me pago la cantidad correcta de la venta, pero el problema se presenta al hacer una vista en base a la siguiente consulta para saber cuanto me deben mis clientes:
para este ejemplo me dice que este cliente me debe 0.035, cuando no debe de ser así porque trunque el total, alguien me puede decir como debo de filtrar mi consulta para que estas diferencias tan chicas las elimine o en el campo saldo me ponga 0 gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8) Jorge Zamora Ginez Puebla, Pue. México |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Calculos con tipo Time | Cañones | SQL | 1 | 25-04-2007 19:29:11 |
Problema en tipo de Datos.. | marceloalegre | Varios | 5 | 30-10-2006 16:09:13 |
tipo de dato para realizar calculos?? | Leogiro | OOP | 1 | 16-09-2004 02:10:15 |
Tipo de datos | Letty | Conexión con bases de datos | 4 | 13-01-2004 21:19:48 |
El Juicio (No apto para impresionables) | delphi.com.ar | Humor | 10 | 12-12-2003 21:51:16 |
|