2016-05-07 24 views
0

Ich würde gerne wissen, ob Gleitkommazahlen in C# falsche Ergebnisse bezüglich größer oder gleich ergeben können.Gleitkommaarithmetik größer oder gleich

static bool foo() 
{ 
    Random r = new Random(); 
    int i = r.Next(int.MinValue, int.MaxValue), 
     j = r.Next(int.MinValue, int.MaxValue), 
     k = r.Next(int.MinValue, int.MaxValue), 
     l = r.Next(int.MinValue, int.MaxValue); 

    BigInteger b1 = new BigInteger(i) * j, b2 = new BigInteger(k) * l; 
    double d1 = (double)i * j, d2 = (double)k * l; 
    return (b1 >= b2 && d1 >= d2) || (b1 <= b2 && d1 <= d2); 
} 

Insbesondere kann foo immer false zurück?

+0

Diese könnten sich als zwei getrennte Fragen herausstellen. – SimpleVar

+0

Was meinst du damit? – RRichi

+0

Ich möchte wirklich wissen, was Sie mit diesem Stück "Code" erreichen wollen? – TheCodeLord

Antwort

0

Ich möchte Ihre Frage umformulieren.
Angenommen ein und b als zwei ganze Zahl die a> = b. und da doppelt Darstellung a und db doppelt Darstellung b.

Ist es möglich, dass da < db?

Die Antwort ist nein.
wenn da < db dann db ist eine doppelte Darstellung a mit geringeren Fehler als da die aufgrund IEEE-754 Norm nicht möglich ist.

Also die Antwort auf Ihre Frage ist auch NO und foo immer wieder wahr.