Tenho a seguinte conta
String.ValueOf((int)150*(1+(5.75/100))+(2*1.5))
Essa conta daria no Java assim: 161.62500000000003
mas preciso somente até 161
alguém pode me ajudar?
Tenho a seguinte conta
String.ValueOf((int)150*(1+(5.75/100))+(2*1.5))
Essa conta daria no Java assim: 161.62500000000003
mas preciso somente até 161
alguém pode me ajudar?
Primeiro, quando for criar um tópico, coloque um título que seja passível de ser entendido.
Segundo, o que você quer fazer com isso?
Desculpe…
Preciso colocar esse valor em uma String… ja estou transformando essa conta numa String, porém se coloco o resultado na string o valor da muito alto por exemplo 161.62500000000003 vira milhoes, rsrs
mas essa conta pode ser assim:
String.ValueOf((int)1000*(1+(5.75/100))+(2*1.5))
Primeiro, atribua o valor do cálculo à uma variável int.
Depois coloque na String.
O seu problema é com parênteses…
O (int) converte só a coisa que está “mais perto dele” porque tem uma prioridade semelhante a um sinal de “-”.
No seu caso,
(int)150*(1+(5.75/100))+(2*1.5)
está convertendo só o número 150 para inteiro. O resultado da expressão será um double e portanto vai dar aquele número 161.625
Para converter a expressão inteira, você precisa cercá-la por parênteses:
(int)(150*(1+(5.75/100))+(2*1.5))
assim
use o java.text.DecimalFormat
DecimalFormat df = new DecimalFormat("0.00");
String str = df.format(0.501);
assim
use o java.text.DecimalFormat
DecimalFormat df = new DecimalFormat("0.00"); String str = df.format(0.501);
Não sei exatamente se é tão principiante assim - uma coisa bizarra que já vi é que tem muita gente que consegue fazer coisas quase incríveis mas até hoje não consegue se virar com expressões matemáticas. Um modo simples de identificar um cara desses é quando ele precisa fazer a manutenção de um código que realmente tem uma expressão dessas: ele acaba “refatorando” o código todo só para evitar criar uma expressão matemática que você consideraria simples.
Pode até ser. A questão não é nem com a expressão, mas com a tratativa do cast explícito para int.
Afinal, ele resolveria o problema facilmente fazendo
int valor = (int)(1000*(1+(5.75/100))+(2*1.5));
String strDoValor = "" + valor;
//ou
String strDoValor = String.valueOf(valor);
//ou ainda
Integer valor = (int)(1000*(1+(5.75/100))+(2*1.5));
return valor.toString();
Porém, a dificuldade com o cast me sugere que ele não tenha tanto conhecimento assim, sequer o uso da classe wrapper Integer seria considerado por ele.