Controle de casas decimais(dúvida)[RESOLVIDO]

3 respostas
A

Alguém conhece algum método da classe Math ou algum algorítimo que consiga restringir o número de casas decimais de um float ou double ao número de casas que eu tiver em mente ?
obs: No caso, eu pretendo continuar usando float…
Se puderem me ajudar, agradeço.

3 Respostas

renamed

Oi

Vc pode tentar truncar o valor com uma precisão de x casas decimais. Existe um método de truncar valores em http://stackoverflow.com/questions/1976809/are-there-any-functions-for-truncating-a-double-in-java

Veja o código que fiz usando esse exemplo, que o autor clama ser mais rápido que usar BigDecimal…

public static void main(String[] args) {
		System.out.println(10f/3f); // 3.3333333
		System.out.println(round(10f/3f, 2)); // 3.33
	}
	
	private static long TENS[] = new long[19]; static {
	    TENS[0] = 1;
	    for (int i = 1; i < TENS.length; i++) TENS[i] = 10 * TENS[i - 1];
	}
	
	public static double round(double v, int precision) {
	    assert precision >= 0 && precision < TENS.length;
	    double unscaled = v * TENS[precision];
	    if(unscaled < Long.MIN_VALUE || unscaled > Long.MAX_VALUE) 
	       return v;
	    long unscaledLong = (long) (unscaled + (v < 0 ? -0.5 : 0.5));
	    return (double) unscaledLong / TENS[precision];
	}
F

Aquila,
Dá uma olhada na classe BigDecimal.

[]s

A

Vlw pela ajuda pessoal!

Criado 22 de maio de 2013
Ultima resposta 22 de mai. de 2013
Respostas 3
Participantes 3