Float, Double?

Bom…já que essa seção é para iniciantes aí vai a minha pergunta que se refere a tipos primitivos da linguagem Java. Números…para ser mais exato.

Tenho uma classe círculo que tem o método move(float dx, float dy).
Pq qdo passo na chamada de métodos ac.move(-1.0,-1.5) dá erro e se eu mudo para double as variáveis dx e dy, a classe funciona.

Gostaria que me explicassem essa diferença entre int, long, float e double. Achava que os dois primeiros eram inteiros, com a única diferença no tamanho e os dois últimos tipos de números reais… Porém com esse erro fiquei meio na dúvida.

Valeu :wink:

A diferença é esta mesmo

Tipo primitivos inteiros:
byte - 8 bits - de -128 a 127
short - 16 bits - de -32768 a 32767
int é um inteiro curto - tamanho 32bits - de -2147483648 a 2147483647
long inteiro longo - tamanho 64 bits - de -9223372036854775808 a …

tipos primitivos flutuantes:
float um numero de ponto flutuante de precisão simples e 32 bits

double um numero real longo é armazenado em 64 bits e é um numero de precisão dupla!

espero que tenha ficado claro.

Entendi Diogo…

Mas a dúvidas são:
[list] - posso representar números reais no tipo float?Como?
- Pq -1.0 não é considerado float e sim double[/list]

Blz HGK_Blade?

Está dúvida seria uma boa pergunta para cair na prova de Certificação…

É o seguinte, como vc disse vc tem o método move(float dx, float dy) . E vc está chamando este método ac.move(-1.0,-1.5). Neste caso irá dar erro mesmo. Porque? Imagine o seguinte, quando vc passa um valor literal (neste caso -1.0 e -1.5) poderia ser tanto float como double, concorda. Por isso Java padroniza que todos valores de constantes literais de ponto flutuante são double. E como vc esta passando -1.0 e -1.5 (que são constante literais) para um método de parâmetros float ele irá dar erro, porque um valor double é maior que float e iria perder precisão. O que vc pode fazer é uma conversão explicita assim: ac.move((float)-1.0,(float)-1.5), onde vc está dissendo - “Eu me comprometo em fazer a conversão, mesmo que eu perda precisão”, que neste caso não irá ocorrer, porque -1.0 e -1.5 pode ser representado em um float.

blz?

Ótimo JavaTeco :slight_smile:

Esclareceu as minhas dúvidas.
Por isso q eu estou viciado no PJ. Eles respondem tudo hehehehehe :stuck_out_tongue:

Só lembrando que este método que o JavaTeco usou se chama o famoso Cast!

Um abraço!

[quote=“HGK_Blade”]Ótimo JavaTeco :slight_smile:

Esclareceu as minhas dúvidas.
Por isso q eu estou viciado no PJ. Eles respondem tudo hehehehehe :P[/quote]

Pessoal, não há necessidade de fazer o cast (conversão) utilizando (float). É só colocar um f no final do número que a linguagem já reconhece o tipo numérico como float. Assim ó: -304.374f. Esse f no final é a representação de números float.

Att

[quote=“morcegao”]Pessoal, não há necessidade de fazer o cast (conversão) utilizando (float). É só colocar um f no final do número que a linguagem já reconhece o tipo numérico como float. Assim ó: -304.374f. Esse f no final é a representação de números float.

Att[/quote]

Realmente…tb dá certo :slight_smile:

Minha maior dúvida era pq ele não aceitava float, já que float tb pode trabalhar com números reais.
E pelo q entendi é q o padrão usado é o double pela sua precisão, então qdo quisermos usar o float devemos explicitar com o f no final ou fazer o type cast.

[quote=“morcegao”]Pessoal, não há necessidade de fazer o cast (conversão) utilizando (float). É só colocar um f no final do número que a linguagem já reconhece o tipo numérico como float. Assim ó: -304.374f. Esse f no final é a representação de números float.

Att[/quote]

Realmente…tb dá certo :slight_smile:

Minha maior dúvida era pq ele não aceitava float, já que float tb pode trabalhar com números reais.
E pelo q entendi é q o padrão usado é o double pela sua precisão, então qdo quisermos usar o float devemos explicitar com o f no final ou fazer o type cast.

[quote=“morcegao”]Pessoal, não há necessidade de fazer o cast (conversão) utilizando (float). É só colocar um f no final do número que a linguagem já reconhece o tipo numérico como float. Assim ó: -304.374f. Esse f no final é a representação de números float.

Att[/quote]

Como eu sempre falo: “Existem 1000 maneiras de fazer Neston!”

:grin: :grin: :grin: :grin: