PDA

Ver la Versión Completa : Operaciones númericas


emeritos
28-01-2007, 16:35:46
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
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:


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