Usando float

7 respostas
E
Pessoal, estou há algum tempo sem usar java e perdi o jeito. Quando compilo a classe abaixo dá erro de perda de precisão. possible loss of precision O que está errado?
public class Valor {

	public float proximoValor (float valorInicial){
	float valor = valorInicial + 1.5;
	return valor;
	}
}
:oops:

7 Respostas

E

Desculpem não ter pesquisado antes. A resposta está no próprio guj. É preciso fazer um CAST, conforme abaixo:

public class Valor {

	public float proximoValor (float valorInicial){
	float valor = (float)(valorInicial + 0.5);
	return valor;
	}
}
Adelar

Olá,
só uma dica… se você precisar de mais precisão deverá utilizar double ou BigDecimal (para valores monetários é aconselhável o BigDecimal).

Att.

renamed

O problema é que o java ve esse valor de 1.5 como um double cuja precisão é maior que um float.
Você pode fazer o cast ou indicar que esse valor não é um double, mas sim um float, escrevendo um f depois do número, ou seja, 1.5f

public class Valor {

	public float proximoValor (float valorInicial){
	float valor = valorInicial + 1.5f;
	return valor;
	}
}

ok?

E

Em 99,95% dos casos, é melhor usar double que float.
a) Em um processador normal (desktop/notebook/netbook), calcular com double leva exatamente o mesmo tempo que com float
b) float é simplesmente impreciso demais para ser usado em aplicações normais (especialmente com dinheiro!)

renamed

De acordo com a Sun, o problema não é tempo, é questão de memória mesmo.

Primitive Data Types

D

se vc quer maior precisão, não é bom usar float nem double…
tem o BigDecimal(q ja foi citado acima) e o Decimal Formater…
vlw

R

public class Valor {

public float proximoValor (float valorInicial){  
float valor = valorInicial + [b]0.5f[/b];  
return valor;  
}

}

na verdade se você colocar 1.5f não vai precisar fazer o cast, o java vai entender que o 1.5 se trata de um float.

Criado 26 de junho de 2010
Ultima resposta 28 de jun. de 2010
Respostas 7
Participantes 6