2017-06-10 3 views
4

0.5 ist eine (negative) Potenz von 2, was bedeutet, dass es genau durch das IEEE-754 binäre Gleitkommaformat darstellbar ist. In Zeichengenauigkeit ist es 0'01111110'00000000000000000000000.Können wir sagen, dass es immer wahr ist, dass 0,5 * x + 0,5 * x == x?

Basierend auf meinen Schnelltests mit deaktivierten Optimierungen (-O0), stellt sich heraus, dass wenn y = 0.5 * x, dann y + y == x. Aber ist es immer durch den IEEE-754-Standard garantiert?

Ich weiß in der Regel, dass, wenn n eine positive ganze Zahl Leistung von 2 und m = 1.0/n, y = m * x, dann y zusammen n mal Zugabe nicht x erzeugt. Aber es scheint, dass mit n = 2 ja.

Vermisse ich etwas?

+1

Mögliche Duplikate von [Ist Fließkomma-Mathematik gebrochen?] (Https://StackOverflow.com/Questions/588004/is-floating-point-math-broken) – mehulmpt

+4

@Mehulmpt Diese Frage ist über '0,2 + 0,1! = 0.3', die seit '0.2' und' 0.1' durch kein binäres Fließkommaformat genau darstellbar sind, ist völlig offensichtlich. Ich denke du verstehst den Unterschied hier nicht. – plasmacel

Antwort

6

Nein, hier ist ein triviales Gegenbeispiel mit double precision floating Punkten:

double x = 4.9E-324; // minimum positive value 
double y = x * 0.5; // this doesn't only look like a zero this positive zero all 0 bits 
bool test = y + y == x; // false 

Gleitkommazahlen unter IEEE-754 Präzision haben nur begrenzte, und wir können Informationen verloren gehen, wenn durch 2 geteilt wird. In den meisten Fällen, wenn Sie die Zahl kleiner machen, gewinnen Sie an Genauigkeit, Sie können den Exponenten verringern, aber wie oben ist das nicht immer genug. Manchmal können Sie den Exponenten nicht verringern.

Alles mit einem minimalen Exponenten und einer ungeraden Mantisse wird die Gleichheit nicht halten. Ein solches Beispiel ist x = 5.0E-322.

+0

Nun ja, der Min-Wert ist in der Tat ein Gegenbeispiel. – plasmacel

+1

alles mit minimalen Exponenten und ungerade Mantisa. versuchen Sie 5,0E-322 –

+0

Nizza! Fügen Sie dies auch der Antwort hinzu. – plasmacel

Verwandte Themen