[size=15pt]Trabalhando com Pontos Flutuantes[/size]
Olá pessoal, como vão? Bem, como a maioria dos meus tutoriais, irei abordar mais uma curiosidade que acerca o mundo das dúvidas.
Nesta aula você aprenderá a trabalhar melhor com pontos flutuantes, ou na língua inglesa: Floats.
Aprenderemos um pouco sobre sistemas numéricos: Binários, Octais, Hexadecimais e Notação Científica. Let's go? XD
Notação CientíficaNotação científica é uma forma de simplificar um número muito extenso, ou seja, com muitos zeros.
Em matemática, usamos: 10 elevado a alguma coisa x número restante. Bem, mais ou menos isso =S
Já no Ruby, usamos:
Resto + e + número de zeros. Exemplo:
- Quero fazer 1 milhão em notação científica.
1 milhão = 1.000.000 (6 zeros!), logo:
1 milhão = 1e6, onde => 1 é o resto, e o número posterior ao 'e' corresponde ao número de zeros.
- Outros exemplos:
1 bilhão = 1.000.000.000 (9 zeros)
1 bilhão = 1e9
- 6 décimos = 0.6 (-1 zero)
6 décimos = 6e-1
- 6 centimétros de um metro:
1 metro = 1, logo, 6 centimetros = 0.06m
0.06m = 6e-2
*OBS: Embora esteja assim, o retorno sempre virá em forma decimal e não em notação científica.
Sistema Octal:Os números octais estão relacionados de forma direta à área da informática. Mas hoje, é mais usado o seu sucessor: O sistema hexadecimal.
É um sistema número de base 8 que usa 8 símbolos, excluíndo o 8 e o 9.
Sistema Binário:O sistema binário é bem famoso na área da informática. É o sistema númerico padrão do Computador.
Nós usamos o sistema decimal, conjunto dos números decimais. Mas os computadores são incríveis!
Tudo que você vê é constituido por esses algarismos também chamados de bits, que é a menor unidade de alocamento de um computador.
Neste sistema, só existem dois algarismos: 0 e 1, verdadeiro ou falso. É bem simples de se entender...
No Ruby, não necessariamente usamos o binário e sim uma variante dele: O BCD 8421.
Nele, os zeros antes do 1 não valem nada, e o que contam são os que vem posterior à ele.
Convertendo binário à decimal:Veja este número:
1111
Ele é um exemplo de número binário. Como posso convertê-lo para número decimal? Simples, Basta multiplicar o número por 2 elevado a ordem em que ele está. Exemplo:
1111 = 1 x 2³ + 1 x 2² + 1 x 2¹ + 1 x 2°, pois possui quatro carácteres.
Logo, 8 + 4 + 2 + 1 = 15
Então, o número binário 1111 corresponde ao número decimal 15.
Éis aqui uma tabelinha com os números mais conhecidos:
- Código:
-
0 = 0
1 = 1 #(1 x 2°)
2 = 10 #(1 x 2¹)
3 = 11 #(1 x 2² + 1 x 2°)
4 = 100 #(1 x 2² + 0 x 2¹ + 0 x 2°)
5 = 101 #(1 x 2² + 0 x 2¹ + 1 x 2°)
6 = 110 #(1 x 2² + 1 x 2¹ + 0 x 2°)
7 = 111 #(1 x 2² + 1 x 2¹ + 0 x 2°)
8 = 1000 #(1 x 2³ + 0 x 2² + 0 x 2¹ + 0 x 2°)
9 = 1001 #(1 x 2³ + 0 x 2² + 0 x 2¹ + 1 x 2°)
etc...
Perceba que nós "decompomos" o número em partes e multiplicamos por uma base 2 elevado ao número que corresponde justamente ao posicionamento em que ele se encontra no algarismo.
Agora chega de papo furado! XD
Para usar números binários em floats, basta seguir o exemplo:
- Código:
-
bin = 0b<numero>
*Retornará um número decimal
Sistema Hexadecimal:Ele é mais usado em Assembly.
O sistema hexadecimal é formado por dezesseis símbolos diferentes. São eles:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, A, B, C, D, E e F, as letras correspondendo aos números 10, 11, 12, 13, 14 e 15 respectivamente.
Por usar letras e números, o sistema hexadecimal é o mais difícil de todos.
Convertendo Números Hexadecimais em Decimais:Primeiro, da mesma forma que os outros, imaginemos um número qualquer (416).
Agora vamos "decompor" esse número:
416 = 4 * 16² + 1 * 16¹ + 6 * 10°
416 = 1024 + 16 + 6 = 1046
Logo... O número hexadecimal 416 será igual ao número decimal 1024!
Convertendo Números Decimais em Hexadecimais:Pegue o número (48).
Divida-o por 16 até quando a divisão resultar numa fração. Exemplo:
48 / 16 = 3 (Resta 0)
3 / 16 = 0 (Resta 3)
Agora, enfileirando os respectivos algarismos que representaram o resto (de baixo para cima), obtemos o número hexadecimal:
No caso, os números que representaram o resto foram: 0 e 3. Logo, trocando a ordem, o número hexadecimal que irá representar o número decimal 48 é o
30! Legal, né? XP
Criando números hexadecimais em floats:É simples, veja:
- Código:
-
hexa = 0xnumber #Onde number é o número
*Há retorno de número em forma decimal.
Números Racionais:Você por acaso já tentou fazer a seguinte operação: 2**-1?
Não? Pois bem... Se tivesse, resultaria no seguinte:
- Código:
-
Rational(1, 2) #Lê-se: O primeiro dividido pelo segundo
São números racionais, embora não possa dizer fielmente que fazem parte da classe Float, em matemática, pertecem a esse grupo.
Bom pessoal, nesta aula aprendemos um pouco mais sobre esses três sistemas númericos e suas aplicações no objeto tipo Float.
Espero que tenham gostado... Junto com aquela antiga aula do Math, nem há desculpa pra não criar uma calculadora científica, né? XP