Como faço para que um valor double seja arredondado somente para
0 ou 5.
Ex…
1,3954 == 1,40
1,2415 == 1,25
1,2251 == 1,20
Como faço para que um valor double seja arredondado somente para
0 ou 5.
Ex…
1,3954 == 1,40
1,2415 == 1,25
1,2251 == 1,20
Tenta isto:
double valorArrendondado = Math.round(d * 20)/20.0;
Explicando melhor. Para duas casas decimais:
Foi daí que eu tirei o número 20 (100/5) 8)
Não entendi muito bem sua colocação. Sera que vc poderia explicar melhor.
tenta pegar essa classe como exemplo…nao sei se ela vai rodar, mas veja como uso o deicmalformat
<import do DecimalFormat, não lmebro...> :oops:
public class Teste
{
private double db1,db2;
private DecimalFormat decimal;
public Teste()
{
db1 = 0;
db2 = 0;
decimal = new DecimalFormat("0.00");
}
private void atribinum(double pdb1,pdb2)
{
db1 = pdb1;
db2 = pdb2;
}
private double divisao()
{
return db1/db2;
}
public static void main(String args[])
{
Teste teste = new Teste();
teste.atribuiNum(1.2,0.5);
System.out.println("Numero formatado: "+decimal.format(divisao());
}
}
No caso, quando vc imprime o metodo divisao(), ali vc poderia estar colocando o numero que deseja formatar…a classe foi apenas uma ideia ok?!
ate mais…
Desculpe mais acho que vcs não entenderam muito bem o que eu quero fazer.
É que eu quero é que o sistema não de valores quebrados tipo
R$ 1,26
R$ 2,33
R$ 1,79
Eu quero que ele arredonte para final 5 ou 0.
Tirando aqueles acima como exemplo, quero que me retorne
R$ 1,25
R$ 2,35
R$ 1,80
Será que alguem tem alguma idéia???
faz na ‘mão’ mesmo…
testa se a parte decimal tá perto de 0 ou 5, arredonda e pront… ehehehe
mas claroque na api deve ter algo do tipo… tenta propurar na api jva, classe Integer… de ter lá.
Minha colocação é bem simples. Se o número termina em 0 ou 5, ele é múltiplo de cinco.
Começamos com : 1,3954
Como você quer com duas casas decimais, multipliquei por 100: 139,54
Eu tenho agora que achar um número que seja múltiplo de 5 o mais próximo possível de 139. Então eu dividi o número por 5 e encontrei: 27,908.
Agora eu quero o número inteiro mais próximo de 27,908, isto é, basta você usar o Math.round!!! e encontrar 28. Qualquer número inteiro multiplicado por 5 termina em 0 ou 5.
Agora eu faço tudo ao inverso, multiplico por 5 e acho 140.
Divido por 100 e acho 1,40.
Você pode simplificar ao verificar que multiplicar por 100 e dividir por 5 é a mesma coisa que multiplicar por 20. E que multiplicar por 5 e dividir por 100 é a mesma coisa que dividir por 20.
Eu sei que a formula Math.round(d*20)/20.0 parece simples demais para ser verdade, mas funciona. O que pode acontecer é vc encontrar algo do tipo 1,3999999999999999999999999 (o double nem sempre dá o resultado exato mas sempre é muito próximo), neste caso vc pode usar a classe DecimalFormat. Creio que eu postei aqui no GUJ como arredondar um número com duas casas decimais utilizando esta classe.