Está en la página 1de 5

La funcion al implemente en un formulario con tres tedit y u tbutton y llamo a la

funcin al pulsar el botn pasando los valores de edit1, edit2 y edit3. Ahora solo tienes
que retocarla a tu gusto

function TForm1.biseccion(a, b, error : extended) : extended;


var
x, ra, rb, rmed : extended;
begin
//Damos a x el valor del primer punto
x := a;

//funcin, aqui pones la funcin para la que quieras calcular raices


// y calculas el resultado a y el resultado b
ra := sqr(x) - 2;

//Damos a x el valor del segundo punto


x := b;

//resultado b
rb := sqr(x) - 2;

//Comprobamos que existan raices


if rb * ra > 0 then
showmessage('No existen raices para x^2 - 2 entre ' + FloatToStr(a) + ' y ' +
FloatToStr(b))
else
begin
//Si existen raices entre a e b calculamos el valor de la funcin en el punto medio
x := (a + b)/2;

rmed := sqr(x) - 2;

//Si el resulta es menor que el error entonces ya tenemos la raiz


if abs(rmed) < error then
begin
showmessage('La rais de la funcin x^2 - 2 entre los puntos '
+ edit1.text + ' y ' + edit2.text + ' es ' +
FloatToStr(x));
exit;
end
else //sino seguimos calculando
begin
//miramos en que intervalo est la raiz
if ra * rmed < 0 then
biseccion(a, x, error)
else
biseccion(x, b, error);
end;
end;
end;
hace 4 aos
Notificar un abuso

Conversiones entre tipos


numricos
Hasta ahora hemos visto como pasar cualquier tipo de variable a string o
al revs. Ahora vamos a ver funciones para convertir valores de un tipo
numrico a otro.

PASAR NMEROS REALES A NMEROS ENTEROS

function Trunc( X: Extended ): Int64;

Esta funcin convierte un tipo Extended al tipo entero Int64 truncando


los decimales (sin redondeos). Por ejemplo:

Trunc( 1234.5678 ) devuelve 1234

function Round( X: Extended ): Int64;

Esta funcin convierte un tipo Extended al tipo entero Int64 pero


redondeando la parte entera segn la parte decimal. Por ejemplo:

Round( 1234.5678 ) devuelve 1235


Round( 1234.4678 ) devuelve 1234

function Ceil( const X: Extended ): Integer;

Convierte un valor Extended en Integer redondeando al nmero entero


que este mas prximo hacia arriba. Por ejemplo:

Ceil( 1234.5678 ) devuelve 1235


Ceil( 1234.4678 ) devuelve 1235
Ceil( 1235.5678 ) devuelve 1236
Ceil( 1235.4678 ) devuelve 1236

function Floor( const X: Extended ): Integer;

Convierte un valor Extended en Integer redondeando al nmero entero


que este ms prximo hacia abajo. Por ejemplo:
Floor( 1234.5678 ) devuelve 1234
Floor( 1234.4678 ) devuelve 1234
Floor( 1235.5678 ) devuelve 1235
Floor( 1235.4678 ) devuelve 1235

Tambin tenemos una funcin un poco rara para extraer el exponente y


la mantisa de un nmero real Extended:

procedure FloatToDecimal( var DecVal: TFloatRec; const Value;


ValueType: TFloatValue; Precision, Decimals: Integer );

Convierte un nmero Extented o Currency a formato decimal


guardndolo en la siguiente estructura de datos:

type TFloatRec = record


Exponent: Smallint;
Negative: Boolean;
Digits: array[0..20] of Char;
end;

Por ejemplo:

var
e: Extended;
RegistroFloat: TFloatRec;
begin
e := 1234.5678;
FloatToDecimal( RegistroFloat, e, fvExtended, 10, 4 );
end;

Al ejecutarlo da los siguientes valores:

RegistroFloat.Digits = 12345678
RegistroFloat.Negative = False
RegistroFloat.Exponent = 4

TRUNCANDO NMEROS REALES

function Int( X: Extended ): Extended;

Aunque esta funcin devuelve slo la parte entera de un valor


Extended, el valor devuelto sigue siendo Extended. El resultado es
similar a la funcin Trunc (sin redondeos). Por ejemplo:

Int( 1234.5678 ) devuelve 1234


Int( 1234.4678 ) devuelve 1234
function Frac( X: Extended ): Extended;

Devuelve la parte fraccionaria de un valor Extended. Por ejemplo:

Frac( 1234.4678 ) devuelve 0.5678

CONVIRTIENDO VALORES EXTENDED Y CURRENCY

Como vimos anteriormente, el tipo Currency no es un autntico


formato en punto flotante sino un entero de punto fijo con 4 decimales
como mximo, es decir, los valores Currency se almacenan como un
entero multiplicado por 10000. Veamos de que funciones disponemos
para convertir de un tipo a otro:

function FloatToCurr( const Value: Extended ): Currency;

Esta funcin convierte de tipo Extended a Currency. Por ejemplo:

FloatToCurr( 1234.5678 ) devuelve 1234.5678 (de tipo


Currency)
FloatToCurr( 123.456789 ) devuelve 123.4568 (de tipo
Currency y perdemos 2 decimales)

function TryFloatToCurr( const Value: Extended; out AResult:


Currency ): Boolean;

Esta funcin es similar a FloatToCurr pero slo comprueba si se puede


convertir a Currency. El procedimiento sera:

var
c: Currency;
begin
if TryFloatToCurr( 123.456789, c ) then
ShowMessage( CurrToStr( c ) );
end;

CONVIRTIENDO VALORES ENTEROS A VALORES REALES

Se puede convertir un valor entero a real convirtiendo la variable


directamente:

var
i: Integer;
r: Real;
begin
i := 1234;
r := i; // realiza el casting
automticamente
ShowMessage( FloatToStr( r ) ); // muestra 1234
end;

Esto no ocurre en todos los casos pero es cuestin de probar (aunque es


recomendable utilizar los tipos Variant para esa labor).

Pruebas realizadas en Delphi 7.


Publicado por Administrador en 18:03
Etiquetas: lenguaje

También podría gustarte