PDA

Ver la Versión Completa : Redondear?


diniremix
19-05-2006, 21:39:51
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, 21:46:09
Mírate este hilo (http://www.clubdelphi.com/foros/showthread.php?t=16805).

Un Saludo.

fer21unmsm
19-05-2006, 22:06:57
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, 22: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, 22: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, 22:28:36
¿Quieres algo asi?


function Redondeo(x: Real): Integer;
begin
if Frac(X) > 0 then
Result:= Trunc(X) + 1
else
Result:= Trunc(X);
end;

fer21unmsm
19-05-2006, 22:34:49
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:

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, 22: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, 22:39:08
:D Y casi la clavo, esta es la funcion Ceil echa por los amigos de borland:


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, 22:43:23
hola gracias d nuevo a todos
m intereso una de llonigualker en otro foro


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


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
19-05-2006, 23:46:18
si le sumas 0.49 al número logras el mismo efecto con el round

i:=round(numero + 0.49);

Saludos

diniremix
19-05-2006, 23: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, 00:18:12
Sé que estais pensando como es la Taberna (http://www.la-taberna.net/), mobiliario, barra, aspecto.... he econtrado un enlace con una taberna que se parece en su aspecto mucho a la nuestra.

Un Saludo.