Conta

8 respostas
R

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?

8 Respostas

drsmachado

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?

R

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))

drsmachado

Primeiro, atribua o valor do cálculo à uma variável int.
Depois coloque na String.

E

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))

MarceloMVT

assim
use o java.text.DecimalFormat

DecimalFormat df = new DecimalFormat("0.00"); String str = df.format(0.501);

drsmachado

MarceloMVT:
assim
use o java.text.DecimalFormat

DecimalFormat df = new DecimalFormat("0.00"); String str = df.format(0.501);


Você por acaso percebeu que o nível de principiante que ele tem é realmente nível de principiante?

E

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.

drsmachado

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.

Criado 2 de maio de 2013
Ultima resposta 2 de mai. de 2013
Respostas 8
Participantes 4