O resultado "2.3841858E-7"; está certo, oq acontece é que o float perde precisão facil, logo não fecha (calcula isso na calculadora, não da zero).
"2.3841858E-7" = 0.[telefone removido]...
Para melhorar a precisão use o BigDecimal. No set a scala para menor casas e terá "0".
C
CelinoPJ
exemplo:
// calculado com o BigDecimalBigDecimalbigResult=newBigDecimal(1.6666666).subtract(newBigDecimal(0.9999998).multiply(newBigDecimal(1.6666666)));System.out.println(bigResult.setScale(20,BigDecimal.ROUND_HALF_UP));// calculado com float (Primitivo)System.out.println((1.6666666F-(0.9999998F*1.6666666F)));// calculado com float formatado com BigdecimalSystem.out.println(newBigDecimal(1.6666666F-(0.9999998F*1.6666666F)).setScale(20,BigDecimal.ROUND_HALF_UP));// para conseguir zero arredonde a onde ti interessa. Ex, 2 casas.System.out.println(bigResult.setScale(2,BigDecimal.ROUND_HALF_UP));
T
tiagolink_PJ
hummmmm
entendi o problema…
mas nao entendi como vc fez… entao fiz de outro modo… funcionou bem