[Resolvido] Arredondar numero com valor definido

7 respostas
Mstanguine

Boa tarde!

Existe algum método em Java que arredonde um número com um valor pré definido?

Ex.:
-Caso o número seja maior ou igual a 1.75, ele seja arredondado para 2.0, caso seja menor que 1.75, seja arredondado para 1.5.
-Ou então, se o numero for maior ou igual a 1.25, arredonde para 1.5, caso menor que 1.25, arredondar para 1.0.

Tentei usar os métodos ceil(), floor() e around() da classe Math, mas não resolveu. =(
Testei com BigDecimal, mas também não adiantou. :S
Essas classes e métodos arredondavam, mas se o número fosse maior que 0.5, ja arredondava para o próximo inteiro seguinte. Ex.: se fosse 1.5, arredondava para 2.0. Ou se fosse 1.4, ia para 1.0.

Existe alguma outra classe, ou método que tenha como determinar o tipo de arredondamento?

Agradeço quem ajudar. =)

7 Respostas

E

não sei se tem forma melhor de fazer isso, mas quando preciso faço algo assim:

double a = 0.7;
  double b = Math.round(a*2)/2.0;
(ou adiciono/subtraio valores para chegar na escala que quero)
Mstanguine

Eu tentei e não consegui, fazendo pela forma que me informou.
Mas clareou mais as ideias.

O que fiz: Adicionei 0,25 ao valor, com isso se caso caia 1,75 ou mais ele arredonda para 2,0.

Vou continuar tentando, obrigado! =)

E

Mstanguine, fiz um teste de mesa rapidinho no excel, vou colar abaixo (vai ficar feio pra c....)

Número	O dobro	Arredondado do dobro	Arredondado
-2	    -4	    -4	                  -2
-1,9	  -3,8	  -4	                  -2
-1,8	  -3,6	  -4	                  -2
-1,7  	-3,4	  -3	                  -1,5
-1,6  	-3,2	  -3	                  -1,5
-1,5	  -3	    -3	                  -1,5
-1,4  	-2,8	  -3	                  -1,5
-1,3  	-2,6	  -3	                  -1,5
-1,2  	-2,4	  -2	                  -1
-1,1	  -2,2	  -2	                  -1
-1	    -2	    -2	                  -1
-0,9	  -1,8  	-2	                  -1
-0,8	  -1,6	  -2	                  -1
-0,7	  -1,4	  -1	                  -0,5
-0,6  	-1,2	  -1	                  -0,5
-0,5	  -1	    -1	                  -0,5
-0,4	  -0,8	  -1	                  -0,5
-0,3  	-0,6	  -1	                  -0,5
-0,2  	-0,4	  -0	                  -0
-0,1	  -0,2	  -0	                  -0
0     	0	      0	                    0
0,1    	0,2   	0	                    0
0,2   	0,4	    0	                    0
0,3   	0,6	    1	                    0,5
0,4   	0,8	    1	                    0,5
0,5	    1	      1	                    0,5
0,6	    1,2	    1	                    0,5
0,7	    1,4	    1	                    0,5
0,8	    1,6	    2 	                  1
0,9	    1,8	    2 	                  1
1	      2	      2	                    1
1,1   	2,2   	2	                    1
1,2	    2,4	    2	                    1
1,3	    2,6	    3	                    1,5
1,4	    2,8	    3	                    1,5
1,5	    3	      3	                    1,5
1,6	    3,2	    3	                    1,5
1,7	    3,4	    3	                    1,5
1,8	    3,6	    4 	                  2
1,9	    3,8	    4 	                  2
2     	4	      4 	                  2
Mstanguine

Ola!
No caso seria isso mesmo. Mas como você chegou no terceiro valor?
Eu multipliquei o numero por 2 (deu o dobro). Arredondei o dobro, depois subtrai do valor. Mas não deu certo. =(

Ex.:

valor = 1.4. result = Math.round (valor*2); valor2 = result - valor; valor3 = Math.round(valor2)

Nesse caso, o valor2 sera 1,6.
Quando arredondo (valor3), vai para 2 e não 1.5. =(

E

a primeira coluna é o número em si. A segunda coluna é o número multiplicado por 2, a terceira coluna é o número da segunda coluna arredondado, e a quarta coluna é o número da segunda coluna dividido por 2.

Mstanguine

Muito obrigado evefuji!!

Mas só um detalhe na frase que você disse:" e a quarta coluna é o número da segunda coluna dividido por 2."

Ai no caso, seria o número da terceira coluna (o valor arredondado da multiplicação) dividido por 2.

Mas muito obrigado, me tirou uma duvida e tanto! =D

E

ops, isso mesmo, a quarta coluna é a terceira dividido por 2. Me confundi na hora de escrever, rsrsrs.

Criado 30 de novembro de 2011
Ultima resposta 2 de dez. de 2011
Respostas 7
Participantes 2