Quando eu digito float com valor inteiro (como no código) dá certo, mas se colocar alguma casa decimal dá erro. Infelizmente, não posso usar double nesse caso (o que seria a salvação...). O exercício pode ser entregue assim, mas eu queria é tirar a dúvida...
Eu estou fazendo um trabalho para a minha faculdade, mas estou tendo dificuldades coma declaração de variáveis do tipo float.
O código é o seguinte:
Arquivo A01E01.java (executável):
publicclassA01E01{publicstaticvoidmain(Stringargs[]){Florflor1=newFlor("Rosa",5,5);//no ultimo 5 o valor 5.0Florflor2=newFlor("Margarida",23,3);//no ultimo 3 o valor 3.0flor1.getDados();flor2.getDados();}}
F
fernandoeick
Quando você digita um valor inteiro na variável de tipo float dá certo porque um valor int é menor do que um valor float. Em outras palavras, a quantidade de bits que um int(16 bits) pode armazenar é menor do que a quantidade de bits que um float(32 bits) pode armazenar. Então você pode colocar um int dentro de um float.
Quando você passa um valor decimal para um float, o valor decimal é por padrão considerado um double. Então você está atribuindo um double para um float. Só que um double(64 bits) é maior que um float(32 bits). Você não pode colocar uma tipo maior em um tipo menor sem que haja perda de precisão, como neste caso, e então o compilador reclama.
Soluções:
Você declara sua variável como double - mas você não quer.
Faz um conversão explicita de double para float.
Você também pode usar as classes Wrappers para isso.
Ou ainda, caso você esteja passando um valor literal, é só acrescentar a letra f no final do valor, que assim o compilador sabe que você quer que aquele ponto flutuante não seja um double, mas sim um float.
Se não souber como fazer, dá um toque aí que tentarei ajudar.
:thumbup:
marcoswp3x
Como foi citado anteriormente, por questões de tamanho e tipos, vc precisa converter o número decimal (double) para float.
Você pode fazer isso assim:
Florflor1=newFlor("Rosa",5.0F,5.0F);
eliphas
fernandoeick:
Ou ainda, caso você esteja passando um valor literal, é só acrescentar a letra f no final do valor, que assim o compilador sabe que você quer que aquele ponto flutuante não seja um double, mas sim um float.
marcoswp3x:
Como foi citado anteriormente, por questões de tamanho e tipos, vc precisa converter o número decimal (double) para float.
Você pode fazer isso assim:
Flor flor1 = new Flor("Rosa", 5.0F, 5.0F);
Entendi essa parada de tamanho (que ninguém me explicou antes nas aulas =P). Funcionou direitinho…