Agora faremos o mesmo, mas para os números decimais, também conhecidos como números reais, que são os tipos float e double.
- Baixe nossa Apostila de C
O que são e para que servem os tipos float e double
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 neste artigo de nossa apostila de C.
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.
23 comentários:
Olá,
estou conhecendo o site hoje e gostaria de "curtir" no Facebook. Mas não encontrei a página. Tem um link?
abraços e obrigado pelo curso.
escrevi no string %.35f e apareceram os 35 números só porque a partir da 20° casa decimal os número começaram a aparecer diferente.
Ótima tarde a todos,
realizei uma verificação do tamanho da variável int, aprendido na aula anterior, e constatei que o tamanho retornado pelo sistema é 4 e não dois como descreve um trecho do texto.
"Você sabe que um inteiro ocupa 2 bytes na memória"
Estou confuso e sinceramente não tenho plena certeza se estou falando a coisa correta. Poderia explicar melhor essa parte para nós?
Jean Ricardo, eu li em algum lugar que o tamanho que a variável ocupa na memória do PC depende de computador pra computador. Se estiver errado, me corrijam.
Oi qmassa esse tutorial
Quero calcular uma % de um valor de uma conta de restaurante , e esse % é 30, é o equivalente a gorjeta do garçom como eu faço isso ?
Consegui emitir para que o usuario escrava o valor , mais como calcular que eu não sei qual variavel usar e como usar :SS
Obrigado galera
Jean Ricardo sua dúvida a respeito do espaço ocupado pelo int
link: http://www.cprogressivo.net/2013/01/Modificadores-do-tipo-inteiro-int-em-C--short-long-signed-unsigned.html
abaixo do tópico
O tamanho que cada variável em C pode ocupar em memória
Vimos que uma variável do tipo int (inteira) em C, geralmente ocupa 2 ou 4 bytes na memória de seu computador.
então seu computador está dentro do esperado, talvez seja mais comum os que ocupam 4, só isso.
Olá. Estou começando a programar em C. Tentei criar um programa pra calcular a area de um circulo usando variavel do tipo double e quando tentei "chama-la" no programa, usando o código de conversão %f, não funcionou. Uso a IDE DEV C++ ela compilou, não mostrou erro mas quando rodei o executável e joguei um valor pro raio, o problema surgiu.
Eis o código que usei pra fazer a bagaça funcionar (perceba que no lugar do %f usei o %lf, indicação de um colega). Gostaria de entender o porque disso, já que em todos os lugares que li sobre codigos de conversão, dizia que para o tipo float e double usa-se o mesmo código que é %f.
#include
#include
main ()
{
double area, raio, PI = 3.14159;
scanf("%lf",&raio);
//printf("Raio = %f",raio);
area = pow(raio,2)*PI;
printf("A=%.4lf\n",area);
system ("pause");
return 0;
}
Boa noite!
Como faço para o programa ler 5 números e calcular a média deles, utilizando apenas 3 variáveis, sem utilizar o comando de repetição.
Interio varia entre dois e 4
Eu vejo nos exemplos em C, que exibem o valor do float assim, %6.2f, assim o 2 exibira 2 casas decimais depois do ponto e o 6 ele só deixa um espaço em branco no console, é isso mesmo? e pq?
#include
int main()
{
float salarioSonho =1E6,
salarioReal =10E-3;
printf( "sonhei que meu salario era de R$%.2 , \n mais ele e de R$%.2f centavos ",salarioSonho,salarioReal);
}
E se eu quiser inserir um valor de ponto flutuante.....%fl??? assim?
Alguém sabe fazer rodar um programa para rodar o Pi ? quais são as variáveis, etc.... Por favor.
Se quiser inserir um valor de ponto flutuante coloque %f
if (seuPC> GBram4)
printf("Então int = 4bits")
else
printf("Então int=2bits")
}
Se eu tenho varios numeros reais e quero deixar todos eles com 4 casas decimais após a virgula, como faço? a cada iteraçao sao gerados muitos numeros! tenho que fazer cout para cada um deles? isso retardaria muito a execucao do codigo.
Pq quando eu coloco:
#include
int main()
{
float pi= 3.14;
printf("pi = %f", pi);
}
O resultado do pi fica "3.40000" (?)
É alguma má configuração do CodeBlocks?
Fiz alguma coisa mal no código?
Para deixar com 4 casas é só colocar o numero 4 depois do ponto por exemplo: %.4f
#include
#include
int main()
{
int parcelas, taxa;
float valor_parcelas, valor_t, valor_emp;
printf("Valor do emprestimo: R$ ");
scanf(" %.2f", &valor_emp);
fflush(stdin);
printf("A taxa de juros sera: ");
scanf(" %d", &taxa);
fflush(stdin);
printf("Numero de parcelas para pagamento: ");
scanf(" %d",&parcelas);
valor_t = (valor_emp + (valor_emp*taxa)/100);
printf("O valor do emprestimo sera: R$ %.2f\n", &valor_t);
valor_parcelas = (valor_t / parcelas);
printf("O Valor das parcelas sera: R$ %.2f\n" ,&valor_parcelas);
}
Boa noite, montei esse exercício para calcular o valor de emprestimo, consigo incluir o valor a taxa de juros e o numero de parcelas, porém o sistema não me retorna o valor do empréstimo e nem o valor das parcelas. Como posso resolver este problema.
Boa noite, amigo vc tem que remover o & dos 2 últimos printf, o do valor_t e do valor_parcelas.
👍👍👍
Nice
ElefantePsiquicoDeGuerraPreHistorico
Postar um comentário