Arredondamento de 2.4 para 2.5

9 respostas
ana.araujo

por favor,

alguem sabe como eu faço para arredonda os seguintes valores

se for até:

2.4 o valor tem que ser 2.5
2.9 o valor tem que ser 3
e assim por diante…

é que eu preciso fazer um calculo que vai de 1/2 em 1/2 - ou seja, o valor tem que ser sempre 2, 2.5, 3, 3.5, 4, 4.5, etc…

achei alguns metodos so que eles so arredondam ou para 2 ou para 3

obrigado…

9 Respostas

victorwss

Métodos para arrendondar:

java.lang.Math.round(float)
java.lang.Math.round(double)

Para arrendondar para xxx.0 e xxx.5, você pode fazer isso:public static float arredondar(float valor) { return Math.round(valor * 2) / 2; }

flaviotomazio

Oi, tenta dar uma olhada em Math.ceil()

peczenyj

teste assim:

Math.round(2.0*a)/2.0

Rafael_ap

Você pode tentar fazer na raça, pegando o resto da divisão por 10 e conparando.
Ou pesquise alguma funcão Math que deve resolver seu problema.

ana.araujo

ai colegas…

tive que fazer na raça e na coragem…
ficou um verdadeiro tanderket… rss

separei os valores - inteiro e fração, depois fiz um if() para logica.

double pesoUn = Double.parseDouble(pesoUnitario.replaceAll("[,]", ".")) * quantidade; 
		
		double pesoInteiro = Math.floor(pesoUn);
		double pesoFracao = (pesoUn - pesoInteiro);
		double pesoTotal;
		double valorFrete;
		
		if(pesoFracao > 0 && pesoFracao <= 0.5){
			pesoFracao = 0.5;
		}else{
			pesoFracao = 1;
		}
		
		pesoTotal = (pesoInteiro + pesoFracao);

pelo menos resolveu… rs…
sem erros…

Obrigado a todos…

victorwss

ana.araujo:
ai colegas…

tive que fazer na raça e na coragem…
ficou um verdadeiro tanderket… rss

separei os valores - inteiro e fração, depois fiz um if() para logica.

double pesoUn = Double.parseDouble(pesoUnitario.replaceAll("[,]", ".")) * quantidade; 
		
		double pesoInteiro = Math.floor(pesoUn);
		double pesoFracao = (pesoUn - pesoInteiro);
		double pesoTotal;
		double valorFrete;
		
		if(pesoFracao > 0 && pesoFracao <= 0.5){
			pesoFracao = 0.5;
		}else{
			pesoFracao = 1;
		}
		
		pesoTotal = (pesoInteiro + pesoFracao);

pelo menos resolveu… rs…
sem erros…

Obrigado a todos…

Isso funciona para algum número como 9.001 por exemplo? Acho que não. E para números negativos?

proteus_adi

Nussa…
Quanta solução…

:),

Pra mim, a classe Math já tem algumas funçõezinhas boas pra isso, como já citado ali o Math.ceil, que irá “arredondar pra cima”, digamos assim.

Tem outras legais na Math, como a Math.floor, a Math.round [essa todo mundo conhece… rs**], a Math.abs que retorna o valor absoluto[sem sinal], etc, etc, etc…

Se o objetivo for : Se os decimais passarem de 0, soma 1: use a Math.ceil

Giulliano

Tenta trabalhar com BigDecimal

BigDecimal valor = BigDecimal.valueOf(varialDouble);
valor.setScale(2, RoundingMode.HALF_UP);
Giulliano

Giulliano:
Tenta trabalhar com BigDecimal

BigDecimal valor = BigDecimal.valueOf(varialDouble);
valor.setScale(2, RoundingMode.HALF_UP);

no seu caso use

valor.setScale(2, RoundingMode.UP);

Criado 21 de novembro de 2008
Ultima resposta 21 de nov. de 2008
Respostas 9
Participantes 7