Foros Club Delphi

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

EmsA-Tec 20-12-2006 21:13:30

Funciones para Redondear
 
Buenos días a tod@s, me gustaría que alguien me explicase como puedo puedo redondear los decimales de un Integer.

Gracias por la ayuda!

Robert01 20-12-2006 21:50:48

usá round(x) o trunc(x) donde x es una variable real o float;

JF Sebastian 20-12-2006 22:17:47

tambien puedes usar ceil(x) y floor(x) para redondear a la alza o a la baja

Onti 20-12-2006 22:24:34

y si solo quieres "mostrar" redodenado utilizas la funcion formatfloat
Código Delphi [-]
Label1.caption :=FormatFloat('###,###.##',NumReal);

EmsA-Tec 21-12-2006 18:09:44

Sufucientes respuestas...
 
Grácias a tod@s, a ver si de esta no se me olvida.;)
Nota, esta web parece funcionar a la perfección, tiempo record!!!

Lepe 21-12-2006 20:04:43

Pues falta la opción más simple: Ninguna, ya que un Integer no tiene decimales :p

Además de rápidos, algunos foristas tienen bolas mágicas ;), otros como yo, solo tienen algo de humor :D

Edito: Este era mi mensaje nº 3.666 :D
Saludos

Onti 21-12-2006 20:44:08

ja ja ja :D :D :D

mira que tienes razon

EmsA-Tec 21-12-2006 23:28:28

e k toi tnto!
 
Cometo faltas de ortografía, y si no empleo el Delphi durante un periodo de 6 años (el 31 del 12 es mi cumple ¡21!), digamos se me olvidan algunas cosas...:p

Bueno, el tema surgió por que tenía que realizar un cálculo con 2 “integres” en división, el resultado, tal como os habréis imaginado entra en una variable de tipo Real; como persona con nivel digno de “MENSA” he aplicado mis conocimientos para la resolución de problemas, el cálculo fuera empleando un “FloatToStr”, un “Edit”, y un real... diera la orden al “Edit”, una vez recogido el valor con "infinitos" decimales: recoger el Nº completo anterior de la coma (la coma es un “Char” a lo igual que el resto), y luego tantos caracteres como quisiese, bueno, decimales posteriores al "elemento mágico"... y todo eso encapsulado en un Real.

Creo que después de leer este rollo hay alguien pensando "¡Que moñas el tío!, un ####### no puede picarse con una tontería", :o por favor, me encanta andar de "cachondeo", pero por favor, hay formas más sutiles de reírse de/con alguien, y si os queréis reír de forma burda, primero estad dentro de la conversación.

Gracias por vuestra atención.

[CI de 132 calculado por la Dispersión 15(lógica)]:cool:

egostar 22-12-2006 00:51:30

Cita:

Empezado por EmsA-Tec
Bueno, el tema surgió por que tenía que realizar un cálculo con 2 “integres” en división, el resultado, tal como os habréis imaginado entra en una variable de tipo Real; como persona con nivel digno de “MENSA” he aplicado mis conocimientos para la resolución de problemas, el cálculo fuera empleando un “FloatToStr”, un “Edit”, y un real... diera la orden al “Edit”, una vez recogido el valor con "infinitos" decimales: recoger el Nº completo anterior de la coma (la coma es un “Char” a lo igual que el resto), y luego tantos caracteres como quisiese, bueno, decimales posteriores al "elemento mágico"... y todo eso encapsulado en un Real.

Espero entender lo que necesitas, puedes usar la funcion Format() para realizar lo que quieres. Aqui te muestro un pequeño ejemplo.

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Entero1,Entero2: Integer;
  Resultado: Real;
begin
  Entero1 := 150;
  Entero2 := 7;
  Resultado := entero1 / entero2;
  Edit1.Text := Format('%8.6f',[Resultado]);
end;

Cita:

Empezado por EmsA-Tec
Creo que después de leer este rollo hay alguien pensando "¡Que moñas el tío!, un ####### no puede picarse con una tontería", :o por favor, me encanta andar de "cachondeo", pero por favor, hay formas más sutiles de reírse de/con alguien, y si os queréis reír de forma burda, primero estad dentro de la conversación.

Hombre, un poco de humor no debe de hacerte daño, bienvenido al foro, relajate un poco y date una vuelta por la taberna, estamos de fiesta de Navidad y Año nuevo.

Saludos.

egostar 22-12-2006 01:06:39

Relei el hilo para entender un poco lo que dices en esta parte

Cita:

"¡Que moñas el tío!, un ####### no puede picarse con una tontería"
Y viendo llegue a la respuesta de Onti


Código Delphi [-]
Label1.caption :=FormatFloat('###,###.##',NumReal);





Si es esto a lo que te referias en tu queja, pues dejame decirte que es la respuesta exacta a lo que preguntaste en el inicio y no una manera burda de reirse de alguien.

Cita:

Buenos días a tod@s, me gustaría que alguien me explicase como puedo puedo redondear los decimales de un Integer.
Cuando explicas lo que quieres entonces ya cambia el sentido de tu problema y ya aportas mas datos para una respuesta mas acertada.

Pues nada, insisto, no pierdas el sentido del humor que no hace daño, date una vuelta por la Taberna y de paso leete las guias de estilo que tenemos en el foro y que son altamente recomendadas a los nuevos integrantes.

La guía de estilo

La otra guía de estilo

Saludos.

Lepe 22-12-2006 01:40:59

EmsA-Tec no pretendía ofenderte ni nada parecido, si nadie hubiera contestado a tu duda, por supuesto te hubiese dado la solución, porque se entiende perfectamente lo que querías decir.

Fijaté que edité el mensaje para indicar mi número de mensajes (terminado en 666), así que me permití la excedencia de contestar diabolicamente ;)

Felices Fiestas y seguimos de buen rollo en la taberna ;)

Saludos

EmsA-Tec 22-12-2006 18:52:39

mmm... creo que nadie me entiende... jejejejejejejeje
 
En la siguiente expresión creo ver un algo de NumReal, en dónde NumReal significa número real...Label1.caption :=FormatFloat('###,###.##',NumReal);…y yo os pregunto, mortales: “¿Si un integer es una veriable que no contiene decimales…? Bueno, que sucede en el siguiente caso???”:
Label1.caption :=FormatFloat('###,###.##',(TheInteger/5));:cool: Lo llamo String, pero bueno… creo que al final es cierto que es mejor llamarlo “X”… jejejejejejejejeje:p Lepe, no era por atacar, ni tenía motivos para hacerlo, pero es que tu 666 me había poseído; jejejejeeBueno, (a tod@s), disculpad por haber montado un rollo de una hoja de papel higiénico, pero es que me daba por pensar que podría surgir algo de sobre-explotación de unas risas.Y deciros que no os corteis por mí:p , no deseaba que terminase así…:o
La verdad es que ya he descubierto el problema, los gallegos cuándo escribimos en castellano acortamos algunas cosas, como por ejemplo mi primera frase, debí poner que era el resultado de un integer, y ná más...

EmsA-Tec 22-12-2006 19:00:39

Podría algún administrador hacer algo???...
 
Santos Admins que conectais directamente con el servidor, admins que estais en vuestras oscuras oficinas escuchad mi plegaria..., (esto me recuerda algo llamado rezar:p ). ¿podrías evitar que entrase alguien nuevo a la conversa, o almenos purgarla?... es que me da algo de palo...:o :o :o

Onti 22-12-2006 19:31:38

Solo por esto
Cita:

¿podrías evitar que entrase alguien nuevo
Vuelvo a entrar !!



Y solo para decirte que aqui no hay problema alguno:D
y por nada mas levanta tu copa y brindemos por esta fiestas :)

Robert01 22-12-2006 20:37:34

Perdón por mi injerencia pero no entiendo cual es el problema.

¿Te sientes mal por las bromas o por no haber resuelto el problema por ti mismo y haber preguntado en el foro?

EmsA-Tec 22-12-2006 21:40:18

repito... ¿como, huaaaaaa!!!!
 
Cita:

Empezado por Onti
Solo por esto Vuelvo a entrar !!



Y solo para decirte que aqui no hay problema alguno:D
y por nada mas levanta tu copa y brindemos por esta fiestas :)

Una pregunta:confused: Si vuelves entrar es por que ya has entrado antes, ¿no?:D
jijiijijijijijijijijiji

bueno, si todo el mundo está loco, es que realmente soy yo el loco, ¿no? :p :p ¡non hai quen me entenda do que falo!

EmsA-Tec 22-12-2006 21:43:18

Cita:

Empezado por Robert01
Perdón por mi injerencia pero no entiendo cual es el problema.

¿Te sientes mal por las bromas o por no haber resuelto el problema por ti mismo y haber preguntado en el foro?

¿como?:eek: , es que me parece que esto no es una animalada, es algo mayor!!!,me lo estoy pasando de p. madre:p
¡haber de que acabamos hablando!; cierto es que el tema es el redondeo, pero de tanto rodar acabamos englobando todo como 1!!!:)

Lepe 23-12-2006 00:40:53

Cita:

Empezado por EmsA-Tec
Label1.caption :=FormatFloat('###,###.##',NumReal);…y yo os pregunto, mortales: “¿Si un integer es una veriable que no contiene decimales…? Bueno, que sucede en el siguiente caso???”:
Label1.caption :=FormatFloat('###,###.##',(TheInteger/5));[/color]

Cuando utilizas la división con el operador div Ej: 5 div 2; el resultado es un tipo Integer, ya que se hace una división entera.

Al usar el operador "/" el resultado es un número real.

Podrás usar tipos Double, Real, extended según necesites, mira en la ayuda de "Double" por ejemplo, y verás el máximo y mínimo que se pueden almacenar

Ya puestos, quizás te interese más la máscara ",#0.00" en lugar de tantas almohadillas, por el hecho de que donde hay un cero, siempre obtendrás un dígito.

Ejemplo:
Formatfloat(',#,##', 123.00) -> el resultado será 123
Formatfloat(',#,00', 123.00) -> el resultado será 123.00 muy útil para que queden alineados los decimales siempre.

PD: No me queda claro que haya resuelto tu duda... si quieres aclarar algo, tírame una piedra ;).

Saludos

Onti 23-12-2006 00:54:21

Lepe si dices :
Cita:

tírame una piedra
Entonces

toma

and

FELIZ NAVIDAD A TI Y A TO2


byte

EmsA-Tec 23-12-2006 13:31:40

¿Duda?
 
Me estoy perdiendo, ¿alguien tiene alguna duda?:confused:
jejejejeje:D


La franja horaria es GMT +2. Ahora son las 11:56:02.

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