Ampliação de variáveis - Métodos sobrecarregados

1 resposta
jawakopi
Saudações, no código abaixo,
// Declarando e ininicializando as variáveis.
int i = [telefone removido];
char c = 1; 
byte b = 1;
short s = 5;
float f = 1.2f;
long l = 9223372036854775807L;

// ..executando os métodos.
go(c); go(b); go(s); go(f); go(l); 

// métodos 
public static void go(int x){System.out.println("int: " + x);}
public static void go(float x){System.out.println("float: " + x);}
public static void go(double x){System.out.println("double: " + x);}
Saída:
int: 1
int: 1
int: 5
float: 1.2
float: 9.223372E18
Achei estranho o long virar ponto flutuante, mas se assim foi, não deveria chamar pelo menos o método double, visto que são 64 bits.

[]'s

1 Resposta

PedroTOliveira

Cara acho que tem haver com a forma de representação do float.

Um ponto flutuante perde precisão no momento da sua representação e apesar do Long.MAX ter 64 bits ele pode ser representado em menos bits reduzindo sua precisão.

Aqui as especificações:


http://en.wikipedia.org/wiki/IEEE_754-1985 (Representação)

http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3

System.out.println(Float.MAX_VALUE); //Imprime: 3.4028235E38
Criado 21 de outubro de 2010
Ultima resposta 21 de out. de 2010
Respostas 1
Participantes 2