PDA

Ver la Versión Completa : cantidad de decimales en campo float


look
03-05-2008, 17:40:04
hola compañeros del foro , trabajo con una base en MSSQL ,tengo el siguiente problema con un campo de tipo float, cuando posteo registros en las tablas para limitar la cantidad de decimales que se guarden utilizo el FormatFloat este trabaja bastante bien el problema es que cuando trato los datos con querys para actualizar los campos con operaciones como multiplicaciones o divisiones estos generan muchos decimales , ahora la cosa es q sera posible al diseñar la tabla limitar la a una cantidad x de decimales el campo o hay otra manera ?...

http://img177.imageshack.us/my.php?image=imagenxx8.jpg

ContraVeneno
03-05-2008, 18:03:54
Podrías utilizar el tipo de dato "Decimal" de SQL Server, en el cuál le defines el número de decimales que quieres manejar. La única restricción es que tienes que definir la cantidad de dígitos enteros mayor a la cantidad de dígitos decimales.

Ahora que si lo que estas manejando son datos monetarios, lo mejor es usar el tipo "Money", el cuál solo permite 4 decimales y al pasarlo a un DBGRid, automáticamente te pone el formato tipo moneda.

o tambien, al hacer la operación, podrías utilizar la función "CAST".

Select Cast(123.234/23.23454 as Decimal(10,2))

look
03-05-2008, 18:26:00
gracias por responder amigo Contraveneno , analize la situacion y tal parece que el problema no necesariamente biene de alli ,....

el problema es que tengo un reporte de ventas y :

http://img517.imageshack.us/my.php?image=reportemi3.jpg

es el que esta en esta imagen detras de la hoja de excel , y luego en la hoja de excel sumo los datos para que vean , tiene que ver con los decimales ya de alguna manera en el reporte este redondea los campos pero al hacer la sumatoria no concuerda ... espero explicarme bien...

ContraVeneno
05-05-2008, 15:51:19
Pues supongo que solo bastaría con darle 4 decimales al formato del total en el reporte.

Si utilizas QuickReport, el QRDBText tiene la propiedad Mask, que puedes editar para darle los 4 decimales.

Pero al ver los datos que manejas, sería muy muy recomendable que los datos lo definieras como "money" desde tu base de datos y que utilizaras el cast al hacer la operación, así no tendrías porqué preocuparte por estos menesteres.


Select Cast(123.234/23.23454 as money)

look
05-05-2008, 20:03:25
perfectamente esta fue la solucion


Select Cast(123.234/23.23454 as money)


Gracias amigo ContraVeneno :)

gonza_619
04-10-2010, 18:53:54
pues bien mi problema es que por un lado tengo un campo tipo integer y por otro un campo tipo Money$, bien el problema es que quiero restarlos y sumar registros entre esos campos, la verdad que no se si conviene cambiar el tipo campo money a otro que permita punto flotante ej(180,50) o (1200,80), bien
pero nose caul tipo de campo seria en PARADOX.
Bueno espero puedan ayudarme,