Opinioni sull'affidabilità / redditività di fare qualcosa del genere per risolvere il problema delle stranezze IEEE in aggiunta e sottrazione, ecc ...? Voglio evitare BigDecimal, Formatters, ecc ... GC overhead
esplorare questa idea.
int fivePlaces = 100000;
Assert.assertEquals(1.13269, add(1.13270, -0.00001, fivePlaces), 0);
private double add(double aPrice,
double aModifier,
double aPrecision) {
long price = (long) (aPrice * aPrecision);
long modifier= (long) (aModifier * aPrecision);
long adjustedPrice = price + modifier;
return adjustedPrice / aPrecision;
}
ad esempio:
double d = 1.30784;
double d2 = -0.00005;
double d3 = d + d2;
double d4 = add(d, d2, 100000);
System.out.println(d3);
System.out.println(d4);
l'idea è di evitare questo risultato: 1,3077899999999998
e prendi questo: 1,30,778 mila
con i primitivi.