Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-07-2006
onlytk onlytk is offline
Miembro
 
Registrado: oct 2005
Posts: 53
Poder: 13
onlytk Va por buen camino
Unhappy Problema con obtencion de decimales

Tengo un problema con la obtencion de decimales de un monto.
Código:
edtRazonSocial.Text := dmData.dbfProvee.FieldValues['Nom_pro'];
montoTotal :=  dmData.dbfCompras.FieldByName('Tot_odc').AsFloat;
partEntera := Trunc(montoTotal);                           

partDecimal := Trunc(100*Frac(montoTotal));

edtMonto.Text := Format('%n',[montoTotal]);
atxtMonto.Numero := partEntera;
edtMontoLetras.Text := atxtMonto.AsString + 'CON ' + Format('%.2d/100',[partDecimal]);
Estoy utilizando el componente ATexto, y quiero que me muestre en letras una cantidad, y que la parte decimal la exprese asi: 90/100 Dolares, pero me falla con algunos decimales puesto que me muestra 89/100 supongo que es el redondeo, alguien me puede ayudar por favor??.

Salu2.
Responder Con Cita
  #2  
Antiguo 17-07-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 901
Poder: 13
luisgutierrezb Va por buen camino
en lugar de AsFloat, procura usar AsCurrency igual para todas las variables que manejes decimales usa tipo Currency
Responder Con Cita
  #3  
Antiguo 17-07-2006
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 66
Poder: 14
bismarck_sierra Va por buen camino
Que tal

Yo lo hago de esta manera, espero te sirva

Código Delphi [-]

partDecimal := Trunc((montoTotal - Int(montoTotal)) * 100);

Saludos
Bismarck
Responder Con Cita
  #4  
Antiguo 17-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 22
Lepe Va por buen camino
Creo que la función Frac hace exactamente eso
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 18-07-2006
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 66
Poder: 14
bismarck_sierra Va por buen camino
Que tal Lepe

Es cierto que la función Frac quita la parte entera, pero en este caso sólo interesan los 2 primeros decimales sin redondear.

Saludos
Bismarck
Responder Con Cita
  #6  
Antiguo 18-07-2006
onlytk onlytk is offline
Miembro
 
Registrado: oct 2005
Posts: 53
Poder: 13
onlytk Va por buen camino
Gracias luisgutierrezb

Gracias luisgutierrezb y bismarck_sierra lo consegui cambiando:
Código:
var
    montoTotal: Double;
    partEntera: Integer;
    partDecimal: Integer;
por:

Código:
var
    montoTotal: Currency;
    partEntera: Integer;
    partDecimal: Integer;
y tambien obteniendo los decimales de la forma en que dijo bismarck_sierra:

Código:
partDecimal := Trunc((montoTotal - Int(montoTotal)) * 100);
Pero porque ocurre esto???, tanta es la diferencia entre los tipos Double y Currency??

Salu2 y gracias.

Última edición por onlytk fecha: 18-07-2006 a las 03:58:45.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Obtención CPUID Kreyser API de Windows 1 23-02-2005 21:03:24
Obtención de clases en runtime. Aprendiz OOP 2 29-09-2004 19:14:48
Problema con Decimales de Double Precision Triton Firebird e Interbase 8 08-09-2004 03:12:00
obtencion de un archivo via internet srangel Internet 0 05-08-2004 17:10:22
Obtención de la Estructura de un AdoQuery FNADALO OOP 5 19-11-2003 11:55:24


La franja horaria es GMT +2. Ahora son las 01:22:50.


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