Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-04-2011
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Unhappy No entiendo el uso de decimales

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

Código Delphi [-]
cantidad := spin_cant.value; {Escribi 3, obtengo 3}
precio := spin_precio.value;  {Escribi 8.52, obtengo 8.5217390006}
total := cantidad * precio; 
{De esta manera me regresa 25.5652170018
al momento de ponerlo en la factura utilizando un FormatFloat obtengo 25.57
pero si hacemos la multiplicacion original obtenemos 25.56 que es lo correcto}

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

Código Delphi [-]
var
 s1,s2 : string;
 tmp : single;
begin
 precio := spin_precio.value;  
 s1 := FormatFloat('###########0.00;-###########0.00;0',  precio);
 s2 := FormatFloat('###########0.00;-###########0.00;0',  cantidad);
 //Ahora si, en s2 tengo 8.52
 tmp := StrToFloat(s1) * StrToFloat(s2);
 //Otra vez, en lugar de obtener 25.56 obtengo 25.559999416
end;

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.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 00:25:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi