ich mich gefragt, ob es einen Weg gibt ein Genauigkeitsproblem zu überwinden, die das Ergebnis meiner Maschine interne Darstellung von Gleitkommazahlen zu sein scheint:Umgang mit Genauigkeitsprobleme in Gleitkommazahlen
Aus Gründen der das Problem Klarheit wird wie folgt zusammengefasst:
// str is "4.600"; atof(str) is 4.5999999999999996
double mw = atof(str)
// The variables used in the columns calculation below are:
//
// mw = 4.5999999999999996
// p = 0.2
// g = 0.2
// h = 1 (integer)
int columns = (int) ((mw - (h * 11 * p))/((h * 11 * p) + g)) + 1;
Vor einer ganzen Zahl zu Gießen des Ergebnis der Berechnung ist Spalten geben 1,9999999999999996; so nah und doch so weit vom gewünschten Ergebnis von 2.0 entfernt.
Alle Vorschläge sehr willkommen.
diese Frage vor gestellt und beantwortet wurde ... nur danach zu suchen ... –
Lesen Sie auf Numerische Analyse, es ist ein großes Problem in bestimmten Situationen. Vielleicht verwenden Sie alternative (aber langsamere) Mathematikbibliotheken wie BigDecimal usw. – JeeBee