Quantidade Total: 110 Quantidade Total: 36 Meta Prazo: 0.0
Porem se vocês fizerem as contas dá o resultado de 67,27 e nao 0.0.
O que esta acontecendo? Já tentei colocar os tipos Int, Long, Big Decimal, Double mas nada resolve, sempre dá o 0.0.
Tentei ‘diminuir a conta’ para saber onde esta o problema, descobri que a subtraçao ele faz certinho, o problema esta quando ele divide. O que é isso?
Oque ocorre é o seguinte: vc faz: (( qntTotal - atrasoSup ) / qntTotal ) * 100 )
Quando ele faz: ( ( qntTotal - atrasoSup ) / qntTotal = ( 110 - 36 ) / 110.
O compilador trata essa expressão toda como um inteiro. Oque dá 0, pois inteiro não tem casa decimal. Então 0 * 100 = 0. Vc só está fazendo o cast para double depois que já encontrou o valor de 0.
vlw
emmanuelrock
Diogo acho que não tem como ele tratar tudo como inteiro pois há uma divisão. Tenho uma teoria:
Aqui estamos lidando com inteiros:
(qntTotal-atrasoSup)=74
Aqui já estamos lidando com ponto flutuante:
(qntTotal-atrasoSup)/qntTotal)=0,67
Aqui o valor acima (0,67) é convertido para integer - resultando em 0 - e multiplicado por 100
(0*100)=0
Nisso é feito o casting (de int para double) + autoboxing (double para Double) transformando o 0 em 0.0.