Divisao esta arredondando sem que eu queira

7 respostas
sudeval

pq quando eu faço isso
[code]
qtdBrinde->5
qtdBrinde->6

double desconto = (qtdBrinde * 100) / qtdProduto;
[code]
isso da 83

quando na verdade era pra dar 83.33

essa é besta pessoal , alguem me ajude ae !!!

7 Respostas

davidbuzatto

gtdBrinde e qtdProduto são double ou int? Se forem int vai arredondar mesmo.

Tenta fazer assim, dando um cast.

double desconto = ( (double) qtdBrinde ) * 100 / ( ( double ) qtdProduto );
sudeval

era so isso mesmo o problema, vlw ae!!!

na verdade eu to querendo pegar a percentagem de um valor para o outro !!!

é assim mesmo ne :slight_smile:
ou vocês fazem de outra forma ?

tipo tenho
5 itens
6 itens total

quanto falta para o total em percentagens :slight_smile:

danieldestro

Declare suas variáveis como double então. Ou senão faça um cast para double, como foi sugerido.

Isso chama-se, em Java, de promoção matemática, ou seja, se fizer calculos com variáveis do tipo int, o resultado será um int. Se misturar os tipos primitivos, as variáveis serão “promovidas” para o tipo maior.

Exemplo:

int a = 1;

int b = 2;

double c = a / b; // resultado = 0
int x = 1;

float y = 2;

double z = x / y;  // resultado = 0.5, pois “x” é promovida para float
T

Uma coisa que o Java herdou do C (e que acho confusa até hoje) é que “/” pode representar a divisão inteira, se ambos os operandos forem inteiros, ou a divisão de ponto-flutuante, se pelo menos um dos operandos for de ponto-flutuante.

É por isso que 4 / 3 dá 1, e 4.0 / 3 dá 1.33333…

Em Pascal (Delphi) existe o operador “div” para divisão inteira, e “/” para ponto-flutuante.

Em VB (argh) existe o operador “” para divisão inteira, e “/” para ponto-flutuante.

Faz trocentos anos que não uso Fortran (20 para ser mais exato), então não sei se o operador “/” do Fortran se comporta como o do C ou do Pascal.

sudeval

cara,
percentagem seria

(quantidade que eu tenho / total )* 100

ne isso ?

ppontes

isso mesmo sudeval, só que pra saber a porcentagem que falta do total tinha que subtrair por 100 né como vc falou.

Ex: 100 - ((quantidade que eu tenho / total )* 100)

t+

A

Cara, se vc quiser o resultado como double sem fazer um monte de cast (deixa o codigo meio feio…), basta fazer o seguinte

double desconto = (qtdBrinde * 100.0) / qtdProduto;

note o 100.0… quando vc coloca um double no meio da equacao, ele calcula tudo como double.

Criado 28 de julho de 2006
Ultima resposta 30 de jul. de 2006
Respostas 7
Participantes 6