domingo, 6 de maio de 2012

Números em JavaScript

 

Uma particularidade pouco conhecida do JavaScript é a forma como os valores numéricos são tratados. Ao contrário de linguagens como C e C++ que possuem diversos tipos de dados para representar seus valores numéricos ('int', 'float', 'double', etc...), a linguagem JavaScript possui apenas um tipo numérico para tratar todos esses valores. Em JavaScript todos os números são representados como pontos flutuantes de 64 bits, utilizando o formato padrão definido pelo padrão IEEE 754.


É possível utilizar três notações distintas para se escrever literais numéricos em JavaScript. São elas:
  1. Base decimal. Esta é a notação numérica mais comum e que nós utilizamos normalmente no dia-a-dia. Os números são representados como uma sequência de caracteres que variam de 0-9. Exemplos de números na base decimal:
      • 32 //Valor: 32 => 3*(10^1) + 2*(10^0)
      • 0 //Valor: 0 => 0*(10^0)
      • 101//Valor: 101 => 1*(10^2) + 0*(10^1) + 1*(10^0)
  2. Base hexadecimal. Esta notação é utilizada para escrver números na base 16. Esta notação pode ser familiar para você caso já tenha trabalhado com endereços de memória em alguma linguagem de baixo-nível. Os números são representados por '0x', ou '0X', seguido de uma sequência de caracteres que variam de 0-9 e A-F (representando os valores de 10 a 15, onde 'A' seria 10 e 'F' seria 15). Exemplos de números na base hexadecimal:
      • 20 //Valor: 32 => 2*(16^1) + 0*(16^0)
      • 0 //Valor: 0 => 0*(16^0)
      • A //Valor: 10 => 10*(16^0)
      • FE //Valor: 254 => 15*(16^1) + 14*(16^0)
  3. Base octal. Esta notação é aceita por alguns interpretadores JavaScript, no entanto não é definida no padrão oficial do JavaScript e portanto deve ser evitada sempre que possível. Para escrever um número na base octal você deve começar com um '0' seguido do número, que pode ser uma sequência de caracteres de 0-7. Exemplos de números na base octal:
      • 20 //Valor: 16 => 2*(8^1) + 0*(8^0)
      • 0 //Valor: 0 => 0*(8^0)
Ao trabalharmos com valores numéricos em JavaScript também é possível utilizarmos valores fracionários. Para isso utiliza-se um ponto '.' para separar a parte inteira da parte fracionária do número. Alguns exemplos simples de números com frações podem ser visto abaixo.
      • .452985466768
      • 15.2
      • 0.5
Há mais uma forma para se representar valores numéricos em JavaScript, através da notação exponencial. Esta notação é composta por um número seguido da letra 'e', que pode vir acompanhada de um sinal (+ ou -) posterior, mais um número inteiro, que será o expoente desta notação. Exemplos de números na notação exponencial:
      • .25e2 //Valor: 0.25 * 10^2
      • 13e-2 //Valor: 13 * 10^(-2)
A sintaxe para esta notação pode ser resumida na seguinte expressão:

[dígitos] [. dígitos] [ (E | e) [(+ | -)] dígitos ]

Bônus: para os que estiverem interessados, abaixo está o código de um simples conversor de base escrito em JavaScript.
  
var array = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",".","-","_"];

var number = prompt("Número:");
var base2 = prompt("Nova base:");

var base1 = array.slice(0,10);
var array2 = array.slice(0,base2);

var tmp     = number;
var result  = "";

for(var i = 0; tmp>0 ;i++){
    var left = tmp%base2;
    result += array2[left];
    tmp = (tmp-left)/base2;
}

alert(result.split("").reverse().join(""));

Um comentário:

  1. Olá,
    Estou desenvolvendo um projeto de uma rede de blogs voltados ao desenvolvimento web, e gostaria de saber se você deseja participar. Caso sim, por favor responder ao e-mail mailto:natanajunges@gmail.com Site: http://rededevweb.blogspot.com.br
    Atenciosamente, Natan Junges

    ResponderExcluir