Andreas Korthaus: FLOAT Problem

Beitrag lesen

Hi!

Aus Numerik I:

Oh je... genau das waren die Gründe warum ich doch nicht Informatik studiert habe... und jetzt braucht man da ja tatsächlich...

Zwei Floats sind gleich, wenn der Absolutbetrag ihrer Differenz kleiner als eine sehr kleine, aber noch als Float darstellbaren Zahl Epsilon ist.

Ok, aber im PHP-Manual steht dass, FLOAT normalerweise auf 14 Nachkommastellen genau rechnet. Ich habe 10, also was kann da schief gehen? Ist es ein Unterschied ob ich 0.2800000000 - 0.0100000000 rechne, oder 0.28 - 0.01? Wenn ja - wie komme ich zu letzterer Version?`Der Einfachste Weg wäre die Umwandlung in FLOAT, nur bleibt das Umrechnubgsproblem dann wohl bestehen, das andere wäre einfach die hinteren Nullen aus dem String zu entfernen - weiß jemand von Euch womit man das in PHP ohne RegExpr. machen kann?

const epsilon = 1.0e-10;

function float_equal(float a, float b)
{
  if (abs(a-b)<epsilon) {
    return 'equal'
  } else {
    return 'not equal'
  }
}

Oder meinst Du ich soll den Vergleich mit eben dieser Funktion durchführen?

Viele Grüße
Andreas