index.htm

RECETAS DE NAVIDAD

- apuntes comunicaciones javascript lenguaje c php autoayuda bolsa chistes empleo fotografia digital ocio sabiasque salud timos trucos

javascript: conversion entre tipos

8.- Conversion entre tipos de datos

  • Conversion implicita de tipos

Observa: var var1 = '75';

var var2 = 25;

var var3, var4;

var3 = var1 + var2;

var4 = var2 + var1;

Las varibles var3 y var4 contienen ¿numeros o textos?

Cuando se suman cadenas de texto con cualquier otra cosa, los otros tipos de datos se convierten en cadenas de texto. Pero si restamos, multiplicamos o dividimos 'cadenas de texto', ¿sucede lo mismo?. Vamos a descubrirlo en los siguientes programas.

  • Escribe el siguiente programa:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

// PROG010.HTM

var num1='30';

var num2='15';

// Observa que definimos dos cadenas de texto

alert('30+15= '+(num1+num2));

alert('30*15= '+(num1*num2));

</SCRIPT>

</HTML>

  • Graba el programa en TuCarpeta con el nombre Prog010.htm
  • Ejecutalo.
  • La conclusion esta clara:
  • Si sumamos dos cadenas (aunque contengan numeros) de texto se produce la concatenacion (union) de los dos textos.
  • Si multiplicamos (o hacemos cualquier operacion aritmetica que no sea la suma), dos cadenas de texo que en realidad contienen numeros, se produce una conversion implicita de las cadenas a numeros y aparece el producto aritmetico de los numeros.
  • ¿Que sucede si introducimos dos numeros a traves de la funcion prompt?. Vamos a verlo:
  • Escribe el siguiente programa:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

//PROG011.HTM

var num1,num2;

num1=prompt('Escribe un numero','');

num2=prompt('Escribe otro numero','');

alert('La suma es ='+(num1+num2));

</SCRIPT>

</HTML>

  • Grabalo en TuCarpeta, con el nombre Prog011.htm
  • Ejecutalo. No funciona como deseamos debido a que el resultado de un prompt, siempre es una cadena de texto.

El problema que tenemos pendiente, es ¿como sumar en JavaScript?

  • Conversion explicita de tipos

parseFloat(cadena)

Toma la 'cadena' y la transforma en un numero en coma flotante, si es posible.

parseFloat ('123.456') = 123.456

parseFloat ('123ABC') = 123

parseFloat ('ABC') = NaN

parseInt(cadena, numero)

Devuelve numeros enteros, el segundo argumento nos permite escoger la base de numeracion (entre 2 y 36)

parseInt ('ABC',16) = 2748 ABC16 = 274810

Si no especificamos el segundo argumento, por defecto es 10.

Si la cadena empieza por 0x y no existe el segundo argumento, se entiende que es 16.

Si la cadena empieza por 0 y no existe el segundo argumento, se entiende que es 8

toString(argumento)

Si argumento = numero

Devuelve una cadena que contiene el numero

Puede haber un argumento opcional:

(13).toString(16) ="d" siendo 1310 = d16

(13).toString(2) = "1101" siendo 1310 = 11012

  • Vamos a hacer un programa que sume numeros en JavaScript. Escribe:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

//PROG012.HTM

var num1,num2;

num1=prompt('Escribe un numero','');

num1=parseFloat(num1);

num2=prompt('Escribe otro numero','');

num2=parseFloat(num2);

alert('La suma es ='+(num1+num2));

</SCRIPT>

</HTML>

  • Grabalo en TuCarpeta con el nombre Prog012.htm
  • Ejecutalo, utilizando numeros enteros, naturales y decimales.

A partir de este momento hemos de tener claro si los "prompts" corresponden a numeros enteros, decimales o de texto:

  • Si "x" ha de ser un numero entero escribiremos:

x = parseInt(prompt("Escribe un numero entero",""));

  • Si "x" ha de ser un numero decimal escribiremos:

x = parseInt(prompt("Escribe un numero entero o decimal",""));

  • Si "x" ha de ser una cadena de texto escribiremos:

x = prompt("Escribe el texto correspondiente","");

  • Escribe el siguiente programa:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

// Prog012b.htm

var x,y;

x=parseInt(prompt('Escribe un entero ',''));

y=parseInt(prompt('Escribe otro entero ',''));

alert('La suma de '+ x +' + ' + y +' es =' + (x+y) +'\n'+

'El producto de '+ x +' y '+ y +' = '+(x*y)+'\n'+

'El promedio de '+ x +' y '+ y +' es '+ (x+y)/2);

</SCRIPT>

</HTML>

  • Grabalo con el nombre Prog012b.htm y ejecutalo.

En el ejercicio Prog007.htm habiamos visto una forma de convertir un numero en base 8 o base 16 en base 10. Pero dichos numeros debiamos de escribirlos implicitamente, es decir en el programa. Nos gustaria hacer un programa que:

  • Nos preguntara un numero en base 16 (prompt)
  • Nos diera como resultado el numero anterior pero en base 10

Vamos a ver si lo conseguimos:

  • Escribe:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

// Prog012bb.htm

var m,n,x;

m=prompt('Escribe un numero en base 16','');

n=parseInt(m,16);

alert('El numero '+m+' en base 16, es igual a '+n+' en base 10');

</SCRIPT>

</HTML>

  • Grabalo con el nombre Prog012bb.htm en TuCarpeta y ejecutalo para el numero "FF32", a ver si es verdad que nos da "65330" como resultado.

Observa el funcionamiento del programa Prog012bb.htm:

  • m = prompt("Escribe un numero en base 16", "")

Lo que escribamos (un numero en base 16), se guardara en la variable "m" como texto (ya que no hemos puesto ningun "parseInt" ni "parseFloat").

  • n =parseInt(m,16)

La variable "n" guardara el numero en base 10

Es decir: parseInt(cadena, 16), transforma la "cadena", en nuestro ejemplo un numero escrito en base 16, en el correspondiente numero (no cadena) pero en base decimal.

Vamos a ver si el procedimiento sirve para cualquier otra base...

Antes de todo veamos unos cuantos numeros en diferentes bases:

367 = 6 + 3.7 = 27 en base 10

1234 = 3 + 2.4 + 1.42 = 27 en base 10

51346 = 4 + 3.6 + 1.62 + 5.63 = 1138 en base 10

  • Escribe:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

// Prog012bbb.htm

var m7,n7;

var m4,n4;

var m6,n6;

m7=prompt('Escribe un numero en base 7','');

n7=parseInt(m7,7);

m4=prompt('Escribe un numero en base 4','');

n4=parseInt(m4,4);

m6=prompt('Escribe un numero en base 6','');

n6=parseInt(m6,6);

alert('El numero '+m7+' en base 7, es igual a '+n7+' en base 10\n'+

'El numero '+m4+' en base 4, es igual a '+n4+' en base 10\n'+

'El numero '+m6+' en base 6, es igual a '+n6+' en base 10');

</SCRIPT>

</HTML>

  • Grabalo con el nombre Prog012bbb.htm y ejecutalo, probandolo con los numeros anteriores.

Veamos el problema inverso: dado un numero en base 10, nos interesa convertirlo a base 7, por ejemplo.

Matematicamente:

Sea 593 un numero en base 10

59310 = 15057 , porque:

En JavaScript deberiamos hacerlo de la siguiente forma, escribe:

<HTML>

<SCRIPT LANGUAGE='JavaScript'>

// Prog012bbbb.htm

var m,n;

n=parseInt(prompt('Escribe un numero entero en base 10',''));

m=(n).toString(7);

alert('El numero '+n+' en base 10, es igual a '+m+' en base 7');

</SCRIPT>

</HTML>

Anterior paso:
contadores
Siguiente paso:
operadores en javascript

· Introduccion a javascript
· Javascript: sintaxis basica
· Variables en javascript
· Javascript: tipos de datos
· Javascript: contadores
· javascript: conversion entre tipos
· Operadores logicos y relacionales en javascript
· If else en javascript
· While en javascript
· Bucles for en javascript
· Switch case javascript
· Do while en javascript
· Calculos iterativos en javascript
· El objeto math javascript
· Variable temporal en javascript
· Funciones sin retorno de parametro. Javascript
· Funciones que devuelven parametros en javascript
· Arrays en javascript
· Matrices con varias dimensiones en javascript
· Codigo ascii/unicode y javascript
· Buscar una letra en un string con javascript
· Temporizadores en javascript
· Introduccion a javascript y html
· Escribiendo en el navegador con javascript
· Formularios en javascript
· Botones en javascript

IMPORTANTE:

- Si te ha gustado esta pagina, por favor, votanos aqui:

- Si no te ha gustado, escribenos y cuentanos en que mejorar.

Actualizado: 16/12/2013