Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu quero pegar as 3 unidades depois da virgula.
Ex:
float a = 897.098;
string b = 098;
cout<< b;
Acredito que voces entenderam com o exemplo acima. Nao pode haver arrays , tem que ser o mais simples possivel.
Agora, vou mostrar a minha tentativa:
#include<iostream>
using namespace std;
int main()
{
float premio;
cout<<"Digite o segundo numero: ";
cin>>premio;
cin.ignore();
float a = float(premio) % int(premio); //Da um erro por causa do mod
ou
float a = float(premio) - int(premio); //
cout<<a;
return 1;
}Obrigado!
Minha intencao era aquele float (do exemplo..) com um limite de 3 unidades depois da virgula. Eu ja tinha tentado antes calcular usando o *1000 mais só dava duas unidades depois da virgula mesmo. Tipo o seu exemplo.
Usei o fmod e consegui. Sinceramente, eu não conhecia o fmod.
Mas eu ainda não sei, veja minha duvida no proprio codigo.
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
float numero = 54.098;
float resto_do_numero = fmod(numero,int(numero));
int pega_resto = resto_do_numero; // Como eu transformo essa varivel em inteiro???
//cout<<setprecision(3)<<fixed;
//cout<<resto_do_numero;
return 1;
}Só vai dar 2 duas unidades pois o zero a esquerda é insignificante e não é representado.
Mas se você quiser imprimir zeros a esquerda pode fazer o seguinte.
int pega_resto = resto_do_numero * 1000;
cout << setfill('0') << setw(3) << pega_resto;
*setfill*('0') define o caractere a ser usado para completar o tamanho informado por *setw*(3) que define o tamanho como sendo 3.Saiu como esperado...Valeu pela paciencia. Só nao sei como marcar o topico como concluido.
/*
Variaveis e entrada
A LBV fez um sorteio cujos bilhetes continham números de 6 dígitos.
O sorteio foi baseado nos dois primeiros prêmios da loteria federal,
sendo o número sorteado formado pelos três últimos dígitos do primeiro
e do segundo prêmio. Por exemplo, se o primeiro prêmio fosse 34.582 e o
segundo 54.098, o número da LBV seria 582.098. Escreva um programa que
lê os dois prêmios e retorna o número sorteado.
*/
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
float numero1;
cout<<"Digite: ";
cin>>numero1; //34.582
cin.ignore();
float numero2;
cout<<"Digite: ";
cin>>numero2; //54.098
cin.ignore();
//pega a parte fracionaria do numeros
float pega_resto_do_numero1 = fmod(numero1,int(numero1));
float pega_resto_do_numero2 = fmod(numero2,int(numero2));
//transforma a parte fracionaria em
//um inteiro para melhor visualizacao.
int a = pega_resto_do_numero1 * 1000;
int b = pega_resto_do_numero2 * 1000;
cout<<"Resultado final: "<<a<<"."<<setfill('0')<<setw(3)<<b; //Resultado final: 582.097
return 1;
}
O operador de modulo(%) só realizada operações com inteiros.
Na sua situação você pode utilizar a função fmod(http://www.cplusplus.com/reference/cmath/fmod/) disponível no cabeçalho cmath.
//ou