Als «floating-accuracy» getaggte Fragen





4
Warum sieht der Gleitkommawert von 4 * 0,1 in Python 3 gut aus, 3 * 0.1 jedoch nicht?
Ich weiß, dass die meisten Dezimalstellen keine exakte Gleitkommadarstellung haben ( Ist die Gleitkomma-Mathematik gebrochen? ). Aber ich verstehe nicht, warum gut 4*0.1gedruckt wird 0.4, aber 3*0.1nicht, wenn beide Werte tatsächlich hässliche Dezimaldarstellungen haben: >>> 3*0.1 0.30000000000000004 >>> 4*0.1 0.4 >>> from decimal import Decimal >>> Decimal(3*0.1) Decimal('0.3000000000000000444089209850062616169452667236328125') >>> Decimal(4*0.1) …



4
Was ist das nächste Doppel zu 1.0, das ist nicht 1.0?
Gibt es eine Möglichkeit, programmgesteuert das Double zu erhalten, das 1.0 am nächsten kommt, aber nicht 1.0 ist? Ein hackiger Weg, dies zu tun, wäre, das Double auf eine gleich große Ganzzahl zu speichern und dann eine zu subtrahieren. So wie IEEE754-Gleitkommaformate funktionieren, würde dies dazu führen, dass der Exponent …

3
Warum 0,1 + 0,2 == 0,3 in D?
assert(0.1 + 0.2 != 0.3); // shall be true ist meine Lieblingsprüfung, dass eine Sprache native Gleitkomma-Arithmetik verwendet. C ++ #include <cstdio> int main() { printf("%d\n", (0.1 + 0.2 != 0.3)); return 0; } Ausgabe: 1 http://ideone.com/ErBMd Python print(0.1 + 0.2 != 0.3) Ausgabe: True http://ideone.com/TuKsd Andere Beispiele Java: http://ideone.com/EPO6X …

6
(.1f + .2f ==. 3f)! = (.1f + .2f) .Gleich (.3f) Warum?
Bei meiner Frage geht es nicht um schwebende Präzision. Es geht darum, warum Equals()anders ist als ==. Ich verstehe warum .1f + .2f == .3fist false(während .1m + .2m == .3mist true). Ich verstehe, das ==ist Referenz und .Equals()ist Wertvergleich. ( Bearbeiten : Ich weiß, dass mehr dahinter steckt .) …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.