Como formatear la salida de Reales



Esta es una de las primeras cuestiones que nos hacemos cuando estamos comenzado la programacion en Turbo Pascal.

Cuando mostramos numeros reales en la pantalla, vemos como estos se muestran en notacion cientifica, algo asi como 1.0000000000E+01, y la mayoria de las veces (si no es que todas las veces) no nos interesa o sirve mostrar los numeros reales de esa forma (la primera vez que me paso pense que era un error mio y los resultados estaban mal ;-) )

La solucion a esto es decirle a pascal, al momento de mandar la informacion, cuantos decimales queremos que utilze para los numeros reales. Especificando enseguida de la variable o numero real, 1.- El numero de espacios a la izquierda que se desea dejar y 2.- El numero de decimales que se quieren mostrar. Por ejemplo.


program prueba_decimales;
uses crt;

var
     a:real;

begin
    clrscr;

    a:=12345.123456789;

    write(a:0:2);
end.

La salida de este pequeño program seria 12345.12, OJO, este no es una forma de redondeo, ni una forma de truncar decimales, la variable sigue valiendo 12345.123456789 lo unico que hacemos con esto es mostrar dos decimales, o el numero de decimales que deseemos. Ahora veamos el siguiente ejemplo.


program prueba_decimales;
uses crt;

var
     a:real;

begin
    clrscr;

    a:=12345.123456789;

    writeln(a:0:1);
    writeln(a:0:2);
    writeln(a:0:3);
    writeln(a:0:4);
    writeln(a:0:0);
    writeln(a:0:50);
end.

Ahora, la salida de las primeras cuatro instrucciones estan claras, ¿o no?, las salidas de los primeros cuatro serian 12345.1, 12345.12, 12345.123, 12345.1234, ahora que pasa con la quinta, pues sencillamente que no mostrara decimales, solo mostrara los numeros enteros, es decir 12345, y que pasa con la sexta, ¿Escribira los nueve decimales y 41 ceros?, pues no, solo mostrara todos los decimales que tenga la variable, seria tanto como hacer writeln(a:0:9)

Hasta ahora solo hemos usado solo el sengundo digito, el primero siempre lo hemos dejado en 0, ¿por que?, ¿para que sirve?, El primer digito es usado como tabulador y nos indica cuantos espacios a la izquierda de la salida queremos que se muestren, por ejemplo.


program prueba_decimales;
uses crt;

var
     a:real;

begin
    clrscr;

    a:=12345.123456789;

    writeln(a:1:0);
    writeln(a:2:0);
    writeln(a:3:0);
    writeln(a:4:0);
    writeln(a:5:0);
    writeln(a:6:0);
    writeln(a:7:0);
    writeln(a:8:0);
    writeln(a:9:0);
end.

Las salidas correspondientes son (uso comillas para notar la diferencia):

  1. "12345"
  2. "12345"
  3. "12345"
  4. "12345"
  5. "12345"
  6. "12345"
  7. "  12345"
  8. "   12345"
  9. "    12345"

Entonces, lo que hace es dejar tantos espacios en blanco como se especifique, ¿Y porque los primeros cinco no hacen nada?, porque aparentemente tambien se cuentan los numeros que componen la informacion, por lo tanto los primeros cinco no muestran los espacios en blanco, pero a partir del sexto, se deja un espacio en blanco, y el septimo deja dos y asi sucesivamente. pero no vamos a entrar mucho en detalle con esto que yo tampoco le entiendo muy bien, la tabulacion tambien sirve con las cadenas y los enteros solo que no se usa el segundo digito que es exclusivo para numeros reales

Ya por ultimo, si van a manejar muchos los numeros reales, es conveniente declarar una variable de tipo entero, que la usaremos para delimitar el numero de decimales que queremos mostrar, asi si mas adelante queremos que se muestren mas o menos decimales, solo modificamos la variable de tipo entero y asi todas las salidas se modificaran automaticamente, por ejemplo.

program prueba_decimales;
uses crt;

var
     a:real;
     dec:integer;

begin
    clrscr;

    dec:=2;
    a:=12345.123456789;

    writeln(a:0:dec);
end.

Asi, de esta forma, podemos incluso dejarle al usuario la desicion del numero de decimales que se desean mostrar.


Descargar ejemplo
formato.zip


Regresar


inicio
Si llegaste a esta pagina desde un buscador
haz click aqui para ir a la pagina principal