[quote=apolonioDeTiana][quote=drsmachado]Existe uma forma matematicamente adequada de resolver este tipo de equação.
Os parênteses ficam ali com o intuito de discriminar a forma de cálculo, porém, não têm a função de priorizar as duas subtrações, mas, indicar que é preciso calcular a multiplicação entre o elemento imediatamente à esquerda de cada um dos abre parênteses.
A saber:
Se realizassemos primeiro as partes internas aos parênteses, teríamos um resultado
[quote]
3*(3.6-4)+2*(3.6-3)
3* (-0.6) + 2 * (0.6);
1.8 + 1.2
3
[/quote][/quote]
creio que o nobre forista não calculou com exatidão a primeira subtração entre parênteses:
(3.6-4) = 0.4
3 * 0.4 = 1.2
[quote]Ah, outra coisa nobre forista, você viu que o número que você forneceu está em notação científica?
4.4408920985006E-16 = 0.00000000000000044408920985006
[]'s[/quote]
0.00000000000000044408920985006 > 0
0.00000000000000044408920985006 != 0
logo, resultado incorreto!
muito intrigante isso, talvez não seja confiável esses cálculos feitos pelo computador.[/quote]
A questão é que a maioria dos runtimes utiliza um método não-exato/aproximado para fazer cálculo de números reais (pontos flutuantes) utilizando matemática binária, o padrão IEEE 754. Este padrão garante velocidade para cálculos usando pontos flutuantes e alguma imprecisão. (ver http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208)
Se você quiser/precisar fazer cálculos cujos resultados sejam matematicamente corretos, melhor usar alguma outra coisa como, no caso de Java, java.math.BigDecimal ou as classes da biblioteca JScience.