![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
![]() Hola amigos.
He tenido un problema (no se si ocurrira solo con D7 que es con el que trabajo) ya que cuando trabajo con numeros flotantes tiende a agregarme decimales. No le habia dado importancia hasta q mi cliente protestó porque cuando el hace una factura, la guarda y la recupera las cantidades no coinciden entre la factura que ha impreso y la que esta guardada. Ejemplifico: Ahorita estoy debuggeando un programa en el cual yo escribo por ejemplo 8.52 en un DecimalSpin. Al acceder a su propiedad "value" para obtener el numero me agrega digitos
Como pueden notar el error es de solo 0.01 pero en una factura con 10 o 20 productos hacen variaciones de 10 a 20 centavos. Pensé que el problema podría ser el Control, sin embargo me repite el mismo problema con cualquier otro control para decimales. De hecho hice otro experimento
No entiendo el motivo de este comportamiento con los decimales. Asi que les pido tengan la gentileza de darme un poco de ayuda para corregir este problema. Muchas gracias de antemano. |
#2
|
|||
|
|||
Es porqué trabajas con variables de coma flotante (float o reals). Para evitar estos problemas de redondeo, se debe usar siempre variables de tipo Currency (que es coma fija).
|
#3
|
||||
|
||||
No solamente variables, obviamente, los campos de la base de datos también.
|
#4
|
||||
|
||||
![]() A eso iba exactamente mi siguiente duda, ya que en MySQL me ocurria lo mismo. Ya estuve leyendo un poco y veo que para MySQL se debe especificar la columna como DECIMAL(M,D) pero me confunde un poco los parametros.
Para moneda cual seria la precision recomendada?? Por ahora estoy utilizando DECIMAL(4,2) Gracias nuevamente, aprecio mucho su ayuda |
#5
|
||||
|
||||
Un poco de off-topic y de SPAM: Hace un tiempo escribí un artículo titulado El Valor de un Céntimo, que está relacionado con el tema del manejo de valores fraccionarios en computadoras digitales. Seguro que te clarifica las cosas.
|
#6
|
||||
|
||||
Hola,
Lecturas obligadas: 1. What Every Computer Scientist Should Know About Floating-Point Arithmetic 2. Comparing floating point numbers 3. Floating point numbers Creo que con ello uno ya se hace la idea. Saludos, PD: A quien no le guste el inglés como a mi, ármese de valor. |
#7
|
||||
|
||||
Cita:
|
#8
|
||||
|
||||
![]() Cita:
Cita:
Muchas gracias, excelente aporte |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda con mi tarea no entiendo!! | chairez0490 | Varios | 3 | 16-12-2009 04:20:58 |
Cable de red que no lo entiendo | Petolansa | Redes | 2 | 21-04-2009 14:55:33 |
no entiendo Intraweb | davidvamo | Internet | 15 | 24-04-2008 05:34:16 |
No lo entiendo | ramonibk | MS SQL Server | 11 | 20-05-2004 20:23:20 |
No entiendo | rastafarey | Firebird e Interbase | 1 | 03-12-2003 17:14:30 |
![]() |
|