ich Sie gehe davon aus bedeuten, nachdem das Programm kompiliert wurde, wie vergleicht es zwei Floats. Die Art, wie Schwimmer gespeichert werden, ist sehr einzigartig. Es wird nach Vorzeichen, Exponent und Bruch gespeichert, wie aus here ersichtlich ist. Wenn es nicht absolut gleich ist, sieht das Programm daher sogar 1 und 1,000000000001 als unterschiedlich. Um zu überprüfen, ob sie fast gleich sind, können Sie die folgende verwenden:
bool AlmostEqualRelativeOrAbsolute(float A, float B,
float maxRelativeError, float maxAbsoluteError)
{
if (fabs(A - B) < maxAbsoluteError)
return true;
float relativeError;
if (fabs(B) > fabs(A))
relativeError = fabs((A - B)/B);
else
relativeError = fabs((A - B)/A);
if (relativeError <= maxRelativeError)
return true;
return false;
}
Der Code von here erhalten wird, können Sie mehr auf der Website zu lesen.
Was ist der Unterschied zwischen bitweisem und wertmäßigem Wert? Sicherlich sind sie die gleichen für Schwimmer –
@EdHeal in Ordnung, das Problem ist bearbeitet – Wizmann
Alle Gleitkommazahlen sind in ** IEEE-754 Fließkomma-Format ** gespeichert. Sie sind entweder ** 32-Bit ** (Gleitkommazahl einfacher Genauigkeit) oder ** 64-Bit ** (Gleitkommazahl doppelter Genauigkeit). Das bedeutet, dass es für jede Gleitkommazahl eine ganze Zahl gibt, die auf den Bits im Speicher basiert. Der Compiler handhabt es genauso, wie es eine Ganzzahl äquivalenter Größe tut. Siehe: [** Der Floating-Point Guide - Was jeder Programmierer wissen sollte ... **] (http://floating-point-gui.de/) –