public void calculaDescontos(double salBruto){
//declaração das variáveis
double fgts = 0.0;
double inss = 0.0;
//calculos dos descontos
[b]fgts = salBruto*(7.0/100);[/b]
inss = salBruto*(3.0/100);
//mostra descontos
JOptionPane.showMessageDialog(null,"FGTS: " +fgts);
JOptionPane.showMessageDialog(null,"INSS: " +inss);
//chamada de método
calculaSalarioLiquido(salBruto,fgts,inss);
}//fim metodo
Galera esta instrução em negrito quando é 7.0, o resultado desta operação sai 7.000000001, enquanto que se colocar outro número como por exemplo 3.0, o resultado sai correto.
outra dúvida o java permite efetuar a seguinte divisão:
double x
Você está lidando com ponto flutuante, talvez seja interessante arredondar o resultado dessa operação.
fgts = Math.round(salBruto*(7.0/100));
Com relação a segunda dúvida, o resultado é 0.00 porque você dividiu dois inteiros. Como tanto o divisor, como o dividendo eram inteiros, o resultado também é inteiro, por isso que 3/4 é igual a 0.00.
Para obter o resultado como double, faça algo do tipo:
Mais um dos problemas herdados do C.
Em Pascal (Delphi), a divisão com “/” divide dois números quaisquer e retorna um “REAL” (double em C e Java); em VB a divisão retorna um Double. Se quiser a divisão inteira (ou seja, dividir dois inteiros e retornar um inteiro), você deve usar “div” em Pascal, e “” em VB.
Já em C, C++ e Java, a divisão “/” normal e a divisão inteira “/” usam o mesmo operador. Isso dá muita confusão no seu caso.
Uma forma é fazer igual aos programadores Fortran, que sempre explicitam que uma determinada constante é de ponto flutuante: