Problema na geração de valores

1 resposta
W

E ai!

Olha só, eu fiz um metodo pra gerar um valor entre 1,01 e 100,99 reais aleatóriamente.
Ai está ele:

public double gerarValor()
  {
    int reais, centavos;
    double valorfinal;

    reais = 1 + (int) (Math.random()*100);
    centavos = 1 + (int) (Math.random()*99);

    valorfinal = reais;
    valorfinal += centavos / 100;

    return valorfinal;
  }

O problema é que o numero sempre sai:
[quaquer numero],0 :!:

Porque quando eu divido os centavos por 100 ele 0 a variavel :?:

Se não é esse o problema, qual é então?

1 Resposta

F

antes de atribuir o resultado na variavel valorfinal, ele faz uma divisao “int / int”, ou seja, divide um inteiro por outro inteiro, que obrigatoriamente resulta em um numero inteiro, sempre arredondando para baixo

para resolver esse problema basta converter um (ou os dois) numeros para double:

public double gerarValor()
  {
    int reais, centavos;
    double valorfinal;

    reais = 1 + (int) (Math.random()*100);
    centavos = 1 + (int) (Math.random()*99);

    valorfinal = reais;
    valorfinal += centavos / 100.0;

    return valorfinal;
  }

dessa forma, dividindo por 100.0 (que eh do tipo double),antes de dividir vai converter centavos para double, e o resultado vai ser um numero do tipo double

Criado 13 de maio de 2005
Ultima resposta 13 de mai. de 2005
Respostas 1
Participantes 2