IEEE 754 ist der am häufigsten verwendete und am weitesten verbreitete Gleitkomma-Standard, insbesondere das Binärformat mit einfacher Genauigkeit (aka float) und das Binärformat mit doppelter Genauigkeit (aka64).
Es ist bekannt, dass sich NaNs in der Arithmetik ausbreiten, aber ich konnte keine Demonstrationen finden, deshalb schrieb ich einen kleinen Test: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f - qNaN; float sub2 = qNaN …
Warum verhalten sich Vergleiche von NaN-Werten anders als alle anderen Werte? Das heißt, alle Vergleiche mit den Operatoren ==, <=,> =, <,>, bei denen einer oder beide Werte NaN sind, geben entgegen dem Verhalten aller anderen Werte false zurück. Ich nehme an, dies vereinfacht numerische Berechnungen in gewisser Weise, aber …
Der Float-Datentyp ist ein 32-Bit-IEEE 754-Gleitkomma mit einfacher Genauigkeit, und der doppelte Datentyp ist ein 64-Bit-IEEE 754-Gleitkomma mit doppelter Genauigkeit. Was heißt das? Und wann sollte ich float anstelle von double verwenden oder umgekehrt?
Wenn ich aus Gründen der Klarheit eine Sprache verwende, die IEE 754-Floats implementiert, erkläre ich: float f0 = 0.f; float f1 = 1.f; ... und dann wieder ausdrucken, bekomme ich 0,0000 und 1,0000 - genau. IEEE 754 ist jedoch nicht in der Lage, alle Zahlen entlang der realen Linie darzustellen. …
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) …
Nein, dies ist keine weitere Frage "Warum ist (1 / 3.0) * 3! = 1" . Ich habe in letzter Zeit viel über Gleitkomma gelesen; Insbesondere, wie dieselbe Berechnung auf verschiedenen Architekturen oder Optimierungseinstellungen zu unterschiedlichen Ergebnissen führen kann . Dies ist ein Problem bei Videospielen, in denen Wiederholungen gespeichert …
Ist es im folgenden Beispiel möglich, eine Division durch 0 (oder unendlich) zu erhalten? public double calculation(double a, double b) { if (a == b) { return 0; } else { return 2 / (a - b); } } Im Normalfall wird dies natürlich nicht der Fall sein. Was aber, …
PHP ist berühmt für sein Typ-Jonglieren. Ich muss zugeben, dass es mich verwirrt, und es fällt mir schwer, grundlegende logische / grundlegende Dinge in Vergleichen herauszufinden. Zum Beispiel: Wenn $a > $bwahr ist , und $b > $cwahr ist , muss es bedeuten , dass $a > $cist immer wahr …
>>> (float('inf')+0j)*1 (inf+nanj) Warum? Dies verursachte einen bösen Fehler in meinem Code. Warum gibt 1die multiplikative Identität nicht (inf + 0j)?
Ich habe über Gleitkomma gelesen und verstehe, dass NaN aus Operationen resultieren kann. Aber ich kann nicht genau verstehen, was das für Konzepte sind. Was ist der Unterschied zwischen ihnen? Welches kann während der C ++ - Programmierung erzeugt werden? Könnte ich als Programmierer ein Programm schreiben, das eine sNaN …
Die Referenzseite isnormal () sagt: Bestimmt, ob die angegebene Gleitkommazahl arg normal ist, dh weder Null, subnormal, unendlich noch NaN ist. Eine Zahl, die Null, unendlich oder NaN ist, ist klar, was es bedeutet. Es heißt aber auch subnormal. Wann ist eine Zahl nicht normal?
Ich weiß ein wenig darüber, wie Gleitkommazahlen dargestellt werden, aber leider nicht genug. Die allgemeine Frage lautet: Welcher Zahlenbereich kann für eine bestimmte Genauigkeit (für meine Zwecke die Anzahl der genauen Dezimalstellen in Basis 10) für 16-, 32- und 64-Bit-IEEE-754-Systeme dargestellt werden? Insbesondere interessiert mich nur der Bereich von 16-Bit- …
In JavaScript kann der NaN-Wert intern durch einen weiten Bereich von 64-Bit-Doubles dargestellt werden. Insbesondere jedes Double mit der folgenden bitweisen Darstellung: x111 1111 1111 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Wird als NaN interpretiert. Meine Frage lautet: Angenommen, ich wandle zwei 32-Bit-Uint …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.