Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Redondear? (https://www.clubdelphi.com/foros/showthread.php?t=31863)

diniremix 19-05-2006 22:39:51

Redondear?
 
hola a tod@s
a Roman m entere q estas d cumpleaños...:D :cool:

q cumplas hasta q c acaben los numeros para contar:) :D :rolleyes:

una duda tengo una serie de numeros decimales pero quiero "redondearlos al numero entero + proximo" algo asip:o
tengo por Ej. 15.3 y convertirlo en 14 por ahí consegui algo pero solo los hace sip estos pasan del ".5" por ej 10.5 ó 13.6 ahí sip los pasa a por ej 11 ó 14 respectivamente.
pero cuando el ".tal" es menor a 5 lo deja en el entero inicial osea 10.4 a el mismo 10 y no a 11!!:eek:
help!!
gracias d nuevo a tod@s

marcoszorrilla 19-05-2006 22:46:09

Mírate este hilo.

Un Saludo.

fer21unmsm 19-05-2006 23:06:57

Cita:

Empezado por diniremix
hola a tod@s
a Roman m entere q estas d cumpleaños...:D :cool:

q cumplas hasta q c acaben los numeros para contar:) :D :rolleyes:

una duda tengo una serie de numeros decimales pero quiero "redondearlos al numero entero + proximo" algo asip:o
tengo por Ej. 15.3 y convertirlo en 14 por ahí consegui algo pero solo los hace sip estos pasan del ".5" por ej 10.5 ó 13.6 ahí sip los pasa a por ej 11 ó 14 respectivamente.
pero cuando el ".tal" es menor a 5 lo deja en el entero inicial osea 10.4 a el mismo 10 y no a 11!!:eek:
help!!
gracias d nuevo a tod@s

Hola diniremix, no entiendo bien tu pregunta ya que dices:

15.3 y convertirlo en 14

y luego

pero cuando el ".tal" es menor a 5 lo deja en el entero inicial osea 10.4 a el mismo 10 y no a 11!!

pero segun lo que entiendo me parece que estas buscando la función:

Ceil -->si quieres más referencias de esta función las puedes encontrar en la ayuda de delphi

Saludos.

diniremix 19-05-2006 23:16:51

Hola fer21unmsn la idea es tratar d "Subir" un decimal a su entero + proximo osea por ej:
10.2 --> 11
6.6 --> 7
etc..
pero encontre uno q lo hace...:)
pero solo con los q son mayores a ".5" osea :eek:
se supone q
10.5 --> 11
5.8 ---> 6
2.4 --> 3 (aqui deberia hacerlo) pero no!!:mad:
etc..
y los q son menores los "baja" es decir
9.4 ---> 9!!
4.2 --->4!!
ahaahah!!
ayuda!!

marcoszorrilla 19-05-2006 23:23:56

Esto creo que no lo hará ninguna función de Delphi, pero puedes construirte una.

Tomas el entero del número en cuestión y se lo restas al propio número si el resultado es mayor de 0 quiere decir que tiene decimales y entonces al entero le sumas uno y ya lo tienes.

Un Saludo.

seoane 19-05-2006 23:28:36

¿Quieres algo asi?

Código Delphi [-]
function Redondeo(x: Real): Integer;
begin
  if Frac(X) > 0 then
    Result:= Trunc(X) + 1
  else
    Result:= Trunc(X);
end;

fer21unmsm 19-05-2006 23:34:49

Cita:

Empezado por diniremix
Hola fer21unmsn la idea es tratar d "Subir" un decimal a su entero + proximo osea por ej:
10.2 --> 11
6.6 --> 7
etc..
pero encontre uno q lo hace...:)
pero solo con los q son mayores a ".5" osea :eek:
se supone q
10.5 --> 11
5.8 ---> 6
2.4 --> 3 (aqui deberia hacerlo) pero no!!:mad:
etc..
y los q son menores los "baja" es decir
9.4 ---> 9!!
4.2 --->4!!
ahaahah!!
ayuda!!

Hola diniremix, exacto la funcióin que te escribi en la respuesta anterior hace eso, la funcion es

Ceil

por ejemplo:
Código Delphi [-]
var
   i: integer;
begin
   i:= ceil(7.2)  //aquí el valor de i va a ser 8
end;

probé tus números y salieron.

Saludos.:)

marcoszorrilla 19-05-2006 23:34:50

Jeje, pues ya no hace falta que te la construyas, el amigo Seoane te lo da hecho.

Un Saludo.

seoane 19-05-2006 23:39:08

:D Y casi la clavo, esta es la funcion Ceil echa por los amigos de borland:

Código Delphi [-]
function Ceil(const X: Extended): Integer;
begin
  Result := Integer(Trunc(X));
  if Frac(X) > 0 then
    Inc(Result);
end;

Soy de los que siempre intenta reinventar la rueda

diniremix 19-05-2006 23:43:23

hola gracias d nuevo a todos
m intereso una de llonigualker en otro foro

Código Delphi [-]
Function Redondeos(Var Numero: real; Cant: Integer; TipoRedondeo: Char): String;
var
Formato: String;
j: Integer;
Begin
// 'S' o 's' significa Redondeo Simétrico, de lo contrario es Truncado.
if (TipoRedondeo = 's') or (TipoRedondeo = 'S') then
Begin
if Cant = 0 then
Formato := '0'
else
Formato := '0.';
for j:=1 to Cant do
begin
Formato := Formato + '0';
end;
Result := FormatFloat(Formato,Numero);
End
Else
Begin
Result := Copy(FloattoStr(Numero),1,Pos(',',FloattoStr(Numero))-1) + Copy(FloattoStr(Numero),Pos(',',FloattoStr(Numero)),Cant+1);
End;
End;

y d marcoszorrilla

Cita:

originalmente escrito por marcoszorrilla

Otra solución a falta de la función en D5 es multiplicar el número por 1000, extraer la parte entera y volver a dividirlo por 1000.

ahh gracias seoane!! :) :D

samantha jones 20-05-2006 00:46:18

si le sumas 0.49 al número logras el mismo efecto con el round

Código Delphi [-]
i:=round(numero + 0.49);

Saludos

diniremix 20-05-2006 00:57:54

hola
sip!!
gracias samantha sabes eres la primera chica q veo en este foro ahh sip y caro eso es seguir adelante, mujeres como tu necesita el software libre!!

vivan la mujeres.... las dueñas de los hombres!!!

marcoszorrilla 20-05-2006 01:18:12

Sé que estais pensando como es la Taberna, mobiliario, barra, aspecto.... he econtrado un enlace con una taberna que se parece en su aspecto mucho a la nuestra.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 12:25:16.

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