Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como saber si una cantidad es entera o decimal (https://www.clubdelphi.com/foros/showthread.php?t=43994)

CarlosHernandez 25-05-2007 18:58:44

como saber si una cantidad es entera o decimal
 
hola de nuevo...

tengo un resultado de una operacion que al final necesito saber si es decima l o entero,

resultado=decimal;

o

resultado=entero;


esto lo hago con varios fines,
1. saber si voy a aplicar o no el FormatCurr('###,###,##0.00', resultado);

esa es la primordial porque si aplico ese formato a un numero entero me da error diciendome que no es un valor currency,


otra pregunta, no se si deba ir aqui es como hago para sumar solo los decimales de 2 cantidades

ejemplo


1,7
5,3

necesito que el resultado sea 2 y 5. y solo debo aplicarlo cuando sea decimal e alli otra razon mas de la pregunta inicial

gracias por la ayuda que me puedan brindar

egostar 25-05-2007 19:07:52

Hola Carlos

Podrias usar esto:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   Resultado := 1.7;
   Label1.Caption := Format('%7d',[round(Resultado)]);
   Resultado := 2;
   Label1.Caption := Format('%7d',[round(Resultado)]);
end;

Salud OS.

sinalocarlos 25-05-2007 19:44:18

Buenos Dias

No es que sea entrometido pero creo que lo que
pretende carlos seria algo asi como:

Código Delphi [-]
Cantidad:=1.7;

if (cantidad - trunc(cantidad)) > 0 then
    showmessage('Decimal')
else
    showmessage('Entero');

Estoy en lo correcto?

CarlosHernandez 25-05-2007 19:47:41

ok gracias, con eso hago para redondear, y no hay una manera para sumar las 2 cantidades que es lo que necesito que haga..

Código:

1,7
 5,3
____

es decir sumar los decimales de la suma

seria algo como sumar

1,7
0,3+
___
 2

y por supuesto el 5,3 queda 5, porque le resto el 0,3

5,3
0,3-
___
 5


como podria hacer eso?
por favor

roman 25-05-2007 20:04:04

Pues creo que lo más directo para saber si un número es entero o no sería usar la función Frac:

Código Delphi [-]
if Frac(N) = 0 then
  ShowMessage('es entero')
else
  ShowMessage('no es entero')

Pero por otra parte me llama la atención que sea necesario hacer tal distinción. Si pongo

Código Delphi [-]
ShowMessage(FormatCurr('###,###,##0.00', 3));

no me marca ningún error.

// Saludos

CarlosHernandez 25-05-2007 20:07:54

bueno roman a mi me da y me dice que no es un valor currency, y por eso no se que hacer.....

roman 25-05-2007 20:14:53

¿Podrías poner un poco más del código antes de

Código Delphi [-]
FormatCurr('###,###,##0.00', resultado);

Por ejemplo, ¿qué tipo de datos es la variable resultado y cómo le asignas un valor?

// Saludos

CarlosHernandez 25-05-2007 20:21:50

total es el resultado de una multiplicacion y sumas de una tabla, aveces da un valor entero o decimal, y cuando lo quiero pasar a un edit para visualizarlo me da el error...


edit9.Text:= FormatCurr('###,###,##0.00', total);

egostar 25-05-2007 20:30:04

Cita:

Empezado por CarlosHernandez
ok gracias, con eso hago para redondear, y no hay una manera para sumar las 2 cantidades que es lo que necesito que haga..

Código:

1,7
 5,3
____

es decir sumar los decimales de la suma

seria algo como sumar

1,7
0,3+
___
 2

y por supuesto el 5,3 queda 5, porque le resto el 0,3

5,3
0,3-
___
 5

como podria hacer eso?
por favor

Si te he entendido bien, trata con este código, espero que sea lo que requieres.

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Decimal,X,Y: real;
begin
  X := 1.7;
  Y := 5.3;
  Decimal := X + (Round(X) - X);
  Label1.Caption := FloattoStr(Decimal);
  Decimal := Y + (Round(Y) - Y);
  Label2.Caption := FloattoStr(Decimal);
end;

Salud OS.

CarlosHernandez 25-05-2007 20:43:15

eso es unos de los problemas, y el trafondo original (no se si deba ponerlo en otro hilo) es trabajar con porcentajes, busque informacion en foros pasados, y dan las misma formula que uso, regla de 3 o multiplicando por 0.algo (0.07 para el 7%).

subtotal=8178881

porcentaje=7,5
descuento=613416


y existen 2 forma de hacer un descuento en porcentaje, o coloco el porcentaje como tal, (7,5%) o coloco la cantidad monetaria 613416

regla de tres

Código:


si coloco el porcentaje y voy a calcular la cantidad monetaria a restar

descuento=porcentaje*subtotal/100;

total=8178881-613416,075
 
total=7565464,925

 
tambien puede ser

total=subtotal*0.075;

si coloco la cantidad monetaria a restar y deseo saber a que porcentaje me equivale eso

subtotal=8178881 100
descuento=613416 porcentaje=x




Código:

porcentaje=descuento*100/subtotal;
porcentaje=7,5

total=8178881-613416,075
 
total=7565465

es lo mismo pero los decimales que le quito a uno se lo suma al otro, y yo quiero que lo calcule de la segunda forma pero con el primer metodo no se si me explico, y por eso no se que hacer,

marcoszorrilla 25-05-2007 22:28:21

No se porque me parece que utilizando FormaFloat acabaría el problema, te pongo un ejemplo a ver si te sirve.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
x:Integer;
begin
x:=133;
Edit1.Text:=FormatFloat(',0.00',x);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
x1: Double;
begin
x1:=1988.343;
Edit1.Text:=FormatFloat(',0.00',x1);
end;

Un Saludo.

egostar 25-05-2007 23:10:13

Me parece que el problema es de concepto, quieres quitar los decimales en el transcurso de la operación, pero lo que todos estamos comentando es que eso lo haces cuando ya tienes el resultado final y lo conviertes (redondeas).

Pienso que cualquiera de las respuestas anteriores te va a resultar satisfactoria.

Salud OS.

CarlosHernandez 26-05-2007 00:10:45

ok gracias a todos, voy a probar todas las opciones y despues les cuento que tal.....

saludos...


La franja horaria es GMT +2. Ahora son las 23:18:37.

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