Luizxp 0 Denunciar post Postado Abril 21, 2016 Pessoal, Gostaria de saber se alguém pode me ajudar no seguinte algoritmo: #include <iostream> #include <cstdio> #include <math.h> using namespace std; int main(int argc, char *argv[]) { float principal; float taxa; int meses; int trimestre; float anterior = 0.0; float montante; float juros; scanf("%f",&principal); scanf("%f",&taxa); scanf("%d",&meses); trimestre = meses*4; for(int i = 1; i <= trimestre; i++){ montante = principal * pow((1 + taxa), i); juros = montante - principal - anterior; anterior += juros; //printf("Mês: %d - Montante: %f - Juros %f\n", i, montante, juros); printf("Rendimento: %.2f Montante: %.2f\n",juros,montante); } } O erro que tá sendo apresentado é este aqui: Esse problema pode gerar um típico caso de erro de precisão da representação do ponto flutuante. Nesse caso, você tem algumas alternativas. Uma delas é usar o tipo mais preciso da sua linguagem, double, por exemplo. Mas ainda assim, você só irá reduzir o erro, mas ainda o terá. Outra possibilidade é trabalhar com inteiros. Por exemplo, se você ler o número 12.35, ao invés de ler em uma única variável, leia em duas variáveis, um inteiro para representar o 12 e outro para representar o 35. Faça as operações de divisão e multiplicação em cima desses inteiros. E cuidado com o resultado da operação, pois ele pode gerar outro número fracionário e, portanto, o mesmo raciocínio deve ser aplicado. Compartilhar este post Link para o post Compartilhar em outros sites