Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Extracción de parte entera de un flotante (https://www.clubdelphi.com/foros/showthread.php?t=40236)

Albano 10-02-2007 04:21:14

Extracción de parte entera de un flotante
 
Hola a todos, tengan un buen día, Dios les bendiga.
Estuve tratando de extraer la parte entera de un numero flotante y no encontré la manera, creí que iba a encontrar una función que lo hiciera y buscando en el foro me encontré el siguiente hilo: Conversion de tipos, donde veo que uno de los foristas escribe lo siguiente:
Cita:

Pascal hace muchas veces la conversión automática de tipos, pero no en el caso de un número de coma floatante a un entero.
Lo que entendí con esa oración es que delphi no tiene una función que extraiga la parte entera de un numero flotante, me equivoco?
Por si acaso me di a la tarea de realizar esta función, aqui la tienen, por si es de utilidad para alguien:
Código Delphi [-]
function floaent(aux: float): integer; stdcall;
var
  aux1, aux2: string;
  i: integer;
begin
  i := 1;
  aux1 := floattostr(aux);
  aux2 := '';
  while (aux1[i] <> '.') and (i <= length(aux1)) do
  begin
    aux2 := aux2 + aux1[i];
    inc(i);
  end;
  floaent := strtoint(aux2);
end;
Esta fución recibe un numero flotante y regresa la parte entera del mismo.

Héctor Randolph 10-02-2007 04:34:15

Hola Albano

Probaste con las funciones Trunc() y Frac()?

Con estas funciones tomas la parte entera y fraccionaria de un real respectivamente.

Saludos

P.D. No sé si están disponibles en todas las versiones

seoane 10-02-2007 04:36:22

:confused: Y las funciones Int o Trunc

roman 10-02-2007 05:01:14

Quizá quiere algo más artesanal

Código Delphi [-]
function ParteEntera(X: Double): Integer;
var
  S: String;

begin
  S := FloatToStr(X);
  Delete(S, Pos('.', S), MaxInt);
  Result := StrToInt(S);
end;

:D

// Saludos

seoane 10-02-2007 05:05:16

Por favor Roman, eso no seria internacional. La forma correcta seria esta :p
Código Delphi [-]
function ParteEntera(X: Double): Integer;
var
  S: String;

begin
  S := FloatToStr(X);
  Delete(S, Pos(DecimalSeparator, S), MaxInt);
  Result := StrToInt(S);
end;

:D

roman 10-02-2007 05:11:47

¡Oh! Muy cierto, ¡qué torpeza la mía! :o

:D :p

// Saludos

Albano 10-02-2007 08:27:39

Yo lo que pretendía era ahorrar codigo usando esa funcion, pero veo que no es necesario, el código para realizar lo que quiero es muy poco, gracias...


La franja horaria es GMT +2. Ahora son las 22:40: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