PDA

Ver la Versión Completa : Funciones para Redondear


EmsA-Tec
20-12-2006, 21:13:30
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

Label1.caption :=FormatFloat('###,###.##',NumReal);

EmsA-Tec
21-12-2006, 18:09:44
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
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
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.

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;



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


"¡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 [-] (http://www.clubdelphi.com/foros/#)
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.


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 (http://www.clubdelphi.com/foros/guiaestilo.php)

La otra guía de estilo (http://www.clubdelphi.com/foros/showpost.php?p=112824&postcount=6)

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
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
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 ¿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
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
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
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 :
tírame una piedra

Entonces

toma (http://3dx-zor.iespana.es/efx/roca.jpg)

and

FELIZ NAVIDAD A TI Y A TO2


byte

EmsA-Tec
23-12-2006, 13:31:40
Me estoy perdiendo, ¿alguien tiene alguna duda?:confused:
jejejejeje:D