Float, Double?

9 respostas
H

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:

9 Respostas

D

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 -[telefone removido] a [telefone removido]
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.

H

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]

J

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?

H

Ótimo JavaTeco :slight_smile:

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

G

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

Um abraço!

“HGK_Blade”:
Ótimo JavaTeco :slight_smile:

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

M

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

H

“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

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.

H

“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

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.

J

“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

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

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

Criado 11 de agosto de 2004
Ultima resposta 12 de ago. de 2004
Respostas 9
Participantes 5