Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Operaciones númericas (https://www.clubdelphi.com/foros/showthread.php?t=39725)

emeritos 28-01-2007 16:35:46

Operaciones númericas
 
Hola a todos,

¿ Como se puede redondear una variable de tipo Extended o Float (creo que es lo mismo) ?.

Os cuento lo que me pasa: despues de hacer unos calculos sencillos de multiplicacion y division, con unas variables las saco por pantalla (convirtiendolas a string), que son por ejemplo 14,2 y 14,2 pues bien la resta natualmente debe de ser cero, pero no es asi es un numero infinitamente pequeño pero lo sufuciente para que en la condicion del if then else me diga que no son iguales.

Asi que he pensado redondearlos, para ver si asi funciona bien.

marcoszorrilla 28-01-2007 19:11:46

Código Delphi [-]
MiString:=FormatFloat('0.00',NumeroFlotante);

Un Saludo.

seoane 28-01-2007 19:41:08

Para comparar ambos números puedes usar la función SameValue de la unidad math

marcoszorrilla 28-01-2007 20:05:16

Muy buen apunte Seone, tengo que reconocer que no sabía de la existencia de esa función.

Un Saludo.

emeritos 28-01-2007 21:17:24

Gracias por las respuestas, pero no hay alguna funcion de redondeo.
He probado con Round y RoundTo pero ninguna de las dos funciona como viene en la ayuda.

roman 28-01-2007 21:29:18

¿Para qué la quieres? A menos que hayas olvidado mencionar algo, la función que comenta seoane es lo que necesitas. Tú mismo estás indicando que ambos valores no son iguales por una pequeña diferencia pero quieres tratarlos como si fuesen iguales. Pues bien, éso es justamente lo que hace SameValue:

Código Delphi [-]
if SameValue(A, B, .001) then
  ShowMessage('Los valores son ''casi'' iguales (no difieren en más de .001)');

// Saludos

emeritos 28-01-2007 22:49:47

Si me ha servido muy bien, pero necesito el redondeo a tres decimales porque cuando el usuario introduce en un campo edit.text un valor (le obligo a que solo sean numeros y el punto decimal), puede meter mas de 3 decimales y despues en la Base de Datos cuando la miro a traves de Mysql Administrator veo que tienen mas de tres decimales tal y como lo ha introducido el usuario. Y yo quiero que como maximo sean tres decimales.

Robert01 29-01-2007 00:23:22

¿No es posible usar un TMaskEdit? En ese caso podrías usar la propiedad EditMask de dicho control.

Saludos


La franja horaria es GMT +2. Ahora son las 06:24:05.

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