Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber la unidad de un número (https://www.clubdelphi.com/foros/showthread.php?t=86686)

Luis M. 16-09-2014 19:56:12

Saber la unidad de un número
 
Hola.
Hay alguna función en delphi que devuelva la unidad de un número entero?
Ejemplo:
Unidad(1234)-> 4
O en su defecto, como se haría?

Un saludo

ecfisa 16-09-2014 20:08:25

Hola Luís.

Según entendí, te referís a la cantidad de dígitos de una cifra, te paso tres formas:

Logarímica:
Código Delphi [-]
function Digitos(Num: Integer): Integer;
begin
  Result:= Trunc(Ln(Num)/Ln(10))+1
end;

Iterativa:
Código Delphi [-]
function Digitos(n: Integer): Integer;
begin
  Result:=0;
  while n > 0 do
  begin
    n:= n div 10;
    Inc(Result);
  end;
end;

Recursiva:
Código Delphi [-]
function Digitos(Num:Integer): Integer;
begin
  if Num mod 10 = 0 then
    Digitos:= 0
  else
    Digitos:= 1 + Digitos3(Num div 10);
end;

Saludos :)

Luis M. 16-09-2014 20:26:44

Hola ecfisa.

Gracias por responder.
Quizás no me explique correctamente.
Quería saber la unidad de un número dado, o sea, el último número.
1538 -> 8
2906753 -> 3

Un saludo.

ecfisa 16-09-2014 20:27:50

Hola de nuevo Luis.

Me quedé pensando que tal vez malinterpreté ( el 4 con los cuatro dígitos del ejemplo ) y te referías a obtener la unidad de una cifra.

Si fué así, simplemente:
Código Delphi [-]
  Unidad:= Numero mod 10;

Saludos :)

Edito: No había visto tu último mensaje pero ya me parecía que había entedido mal... :o

Luis M. 16-09-2014 20:52:24

Me funciona perfecto.
Muchas gracias.
Ya me había armado algo, lo pongo igualmente aquí.
Código Delphi [-]
Label1.Caption := Copy((IntToStr(14752343240)),Length(IntToStr(14752343240)),1);
tu código muchisimo mejor.
Un saludo.

Casimiro Notevi 16-09-2014 21:00:04

Cita:

Empezado por Luis M. (Mensaje 481594)
tu código muchisimo mejor.

:)
^\||/^\||/^\||/

ecfisa 17-09-2014 06:36:56

Hola Luis.

Sin embargo, tu función puede ser útil en casos especiales en que sería imposible usar la otra, por ejemplo:
Código Delphi [-]
var
  numStr: string;
  ultDig: Integer;
begin
  numStr:= '99147529999343245987123598199952245933587';
  ultDig:= StrToInt(Copy(numStr, Length(numStr), 1));
  ...

Saludos :)

Casimiro Notevi 17-09-2014 11:14:19

También es cierto :)

Luis M. 17-09-2014 11:45:58

Cita:

Empezado por ecfisa (Mensaje 481619)

Sin embargo, tu función puede ser útil en casos especiales en que sería imposible usar la otra

Saludos :)

Vaya...
Me alegra poder aportar algo útil.

Muchas gracias y un saludo.


La franja horaria es GMT +2. Ahora son las 13:38:33.

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