O que são e para que servem os tipos float e double
Em nosso dia-a-dia, muitas vezes usamos dados em forma de números decimais, como por exemplo:
o rendimento da poupança (0,57%, 1,01%),
valores monetários (R$ 1,99) ,
as notas da faculdade (10,0 , 5,4 , 0,5),
constantes e outrs números matemáticos ( pi = 3,14...) etc.
Não podemos, porém, armazenar essas informações em variáveis inteiras na linguagem C.
Ao invés disso, precisamos declarar usando os tipos de dados float e double, que são tipos especialmente feitos para que possamos trabalhar com números reais (decimais).
Vamos aprender como usar tais tipos de variáveis e não apavorar sem necessidade.
Como declarar e inicializar variáveis do tipo float e double na linguagem C
Lembre-se que, para inteiros, declaramos da seguinte maneira: int idade, int mes etc.Analogamente, para floats e double:
float pi;
float juros;
double tamanho_de_uma_bacteria;
double area_de_uma_circunferencia;
A declaração também não é diferente da que fizemos com inteiros.
Podemos inicializar valores tanto na declaração das variáveis como somente depois:
float pi = 3.14;
double juros = 1.32101;
Ou
float pi;
double juros;
pi = 3.14;
juros = 1.32101;
Se você é novo no mundo da programação e nunca teve contato com uma língua estrangeira, certamente achará tais inicializações de variáveis estranha. Mas esse é uma regra bem importante:
Na linguagem de programação C, usamos o PONTO (.), e não a vírgula para separar a parte inteira da decimal.
Ou seja, no Brasil escrevemos: 1,99 e 0,57
Em programação é: 1.99 e 0.57
Qual a diferença entre float e double
Temos, então, duas opções iguais para representar esses números decimais? Na verdade não, há uma diferença.
Variáveis float exigem, geralmente, 4 bytes de memória para serem armazenadas enquanto double necessitam de 8 bytes.
Essa diferença serve para termos uma melhor precisão na hora de realizar cálculos.
O número PI, por exemplo, é irracional. Ou seja, ela possui uma quantidade INFINITA de casas decimais.
Obviamente, uma cálculo com o uso do pi nunca é totalmente preciso. Além do mais, computadores tem uma quantidade de memória limitada.
Então, nos seus trabalhos escolares você deve declarar e usar uma variável do tipo float para representar o número pi:
float pi = 3.14;
Se quiser ser mais preciso pode fazer até: pi = 3.1415;
Já um Engenheiro Civil ou um Físico da NASA terá que usar uma precisão maior, pois quanto mais casas decimais, mais correto
será seu resultado. Então, eles usariam:
double pi = 3,14159265358979323
Ok, agora você sabe a diferença entre um float e um double - apenas a precisão.
Mas qual a diferença entre 0 e 0.0? E a diferença de 1 e 1.00?
Você sabe que um inteiro ocupa 2 bytes na memória, e que um float ocupa 4 bytes.
Além do tamanho alocado em sua máquina, qual outra diferença que faz esses valores diferentes?
Sim, o ponto. Ou seja, a parte decimal.
Fazer: int erro = 0
É totalmente diferente de: float erro = 0.0;
Uma vez declarado um inteiro, não poderá usar decimais nele. Mesmo sabendo que 0 = 0.0
Já os decimais podem ser trabalhados com inteiros.
Por exemplo:
double erro = 0.00
int juros = 1
Podemos fazer: juros + erro = 1.00
Ou seja, quando fazemos uma operação matemática de um decimal com inteiro, obteremos sempre um decimal.
Assim, o resultado dessa operação deverá sempre ser armazenado em um float ou em um double.
Veremos mais sobre isso quando estudarmos operações matemáticas na linguagem C.
Imprimindo números reais float e double na tela através do printf
Vimos na aula passada que representamos inteiros como %d dentro das aspas, de um printf.Para variáveis decimais ou reais, como o float e o double usamos: %f
Vejamos um exemplo que mostra um valor de pi com precisão simples (float) e outro com precisão dupla(double):
#include <stdio.h> int main() { float pi = 3.14; double piDouble = 3.1415926535897932384626433832795; printf("Valor de pi %f\n", pi ); printf("Valor de pi mais preciso %f\n", piDouble ); }
Aqui notamos uma coisa curiosa no segundo valor, é exibido: 3.141593
Ou seja, o C não mostrou todo o valor da variável double 'piDouble' e ainda arredondou!
Podemos resolver isso da seguinte maneira. Supondo que você queira que seja exibido 6 casas decimais:
Ao invés de usar '%f' coloque: '%.7f'
Ou seja, esse 0.7f diz ao C o seguinte "Após o ponto, exiba 7 casas decimais".
Teste e veja o resultado:
#include <stdio.h> int main() { float pi = 3.14; double piDouble = 3.1415926535897932384626433832795; printf("Valor de pi %f\n", pi ); printf("Valor de pi mais preciso %.7f\n", piDouble ); }
Será exibido: 3.1415927
Agora veja o seguinte: a variável 'pi' tem somente duas casas decimais depois do ponto.
O que ocorre se eu ordenar ao printf que imprima com 5 casas decimais?
Programe e veja você o que acontece:
#include <stdio.h> int main() { float pi = 3.14; double piDouble = 3.1415926535897932384626433832795; printf("Valor de pi %.5f\n", pi ); printf("Valor de pi mais preciso %.7f\n", piDouble ); }
Como imprimir números na forma exponencial em C
Outra maneira de imprimir variáveis decimais é usando exponenciais.Podemos inicializar uma variável da seguinte maneira:
float numero = xEy;
Isso significa: x vezes 10 elevado a y = x * 10^y
Ou seja, 1E6 = 1 vezes 10^6 = 1 milhão
E float numero = xE-y
Significa: x vezes 10 elevado a -y = x * 10^(-y)
Por exemplo: 2E-3 = 2 vezes 10^(-3) = 0.002
Veja o seguinte código e tente adivinhar sua saída. Logo após, rode o programa para vê se acertou:
#include <stdio.h> int main() { float salarioSonho = 1E6, salarioReal = 10E-3; printf("Sonhei que meu salario era de R$%.2f, \nmas acordei e lembrei que era %.2f centavos", salarioSonho, salarioReal); }
Nesse último exemplo, note como declaramos mais de uma varíável.
Em vez de fazer:
float variavel1;
float variavel2;
float variavel3.
Você pode fazer:
float variavel1, variavel2, variavel3;
Ou, para ficar mais legível:
float variavel1,
variavel2,
variavel3.
Até a proxima ;) |
Nenhum comentário:
Postar um comentário