<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=NaN</id>
	<title>NaN - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=NaN"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=NaN&amp;action=history"/>
	<updated>2026-06-01T06:33:21Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=NaN&amp;diff=31462&amp;oldid=prev</id>
		<title>imported&gt;Cosmosis77: /* growthexperiments-addlink-summary-summary:1|1|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=NaN&amp;diff=31462&amp;oldid=prev"/>
		<updated>2025-05-02T11:53:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:1|1|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|beschäftigt sich mit dem numerischen Datentypwert. Zu anderen Bedeutungen siehe [[Nan (Begriffsklärung)]].}}&lt;br /&gt;
In der &amp;lt;!-- NaN ist kein Begriff der Informatik, sondern entstammt einer Spec. --&amp;gt; [[Informationstechnik]] steht &amp;#039;&amp;#039;&amp;#039;NaN&amp;#039;&amp;#039;&amp;#039; (englisch für „Not a Number“ – „Keine Zahl“) für einen [[Numerische Mathematik|numerischen]] [[Datentyp]]-Wert, der einem undefinierten oder nicht darstellbaren Wert entspricht, und kommt insbesondere bei [[Gleitkommazahl]]berechnungen vor. NaN erlangte systematische Verwendung mit der Einführung des [[IEEE 754|IEEE-754]]-Gleitkommazahlenformats im Jahr 1985, in dem auch andere nicht-finite Größen wie Unendlichkeit symbolisch dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Es werden zwei verschiedene NaN-Arten verwendet: stille NaNs (engl. &amp;#039;&amp;#039;quiet NaN&amp;#039;&amp;#039;) und anzeigende NaNs (engl. &amp;#039;&amp;#039;signaling NaN&amp;#039;&amp;#039;). Anzeigende NaNs werden Variablen zugewiesen, die nicht explizit initialisiert wurden. Stille NaNs hingegen werden als Ergebnis von eigentlich ungültigen Operationen eingesetzt.&amp;lt;ref&amp;gt;[[Gerhard Goos]]: &amp;#039;&amp;#039;Vorlesungen über Informatik: Band 1: Grundlagen und funktionales Programmieren.&amp;#039;&amp;#039; Springer, Berlin Heidelberg, 1995, 1997, ISBN 978-3-540-62880-4, S. 365&amp;lt;/ref&amp;gt; Beispielsweise ist das Ergebnis von &amp;lt;math&amp;gt;\tfrac{0}{0}&amp;lt;/math&amp;gt; als [[reelle Zahl]] undefiniert und wird mit NaN dargestellt. Ein anderes Beispiel ist das Ergebnis der Quadratwurzel einer negativen Zahl, welches im reellen Zahlenraum undefiniert ist. Lässt man den [[Komplexe Zahl|komplexen Zahlenraum]] als Ergebnis zu, ergibt sich eine [[imaginäre Zahl]], die eben nicht als reelle Zahl bzw. Gleitkommazahl darstellbar ist und daher für eine Gleitkomma-Ergebnisvariable der Gleitkommaoperation durch NaN ersetzt wird. Außerdem erzeugt jede mathematische Operation, von der ein Argument NaN ist, ebenfalls NaN als Ergebnis. NaN wird des Weiteren als einfacher Platzhalter verwendet.&lt;br /&gt;
&lt;br /&gt;
== Gleitkommazahlen ==&lt;br /&gt;
Bei Gleitkommazahlberechnungen entspricht NaN nicht der [[Unendlichkeit]], wenngleich beides Sonderfälle sowohl in der Wertdarstellung als auch bezüglich der möglichen Gleitkommaoperationen sind. Eine ungültige Operation  entspricht nicht einem [[Arithmetischer Überlauf|arithmetischen Überlauf]] (der Unendlich zurückgeben könnte) oder einem [[Arithmetischer Unterlauf|arithmetischen Unterlauf]] (der die kleinste [[IEEE 754#Normalisierte Zahl|normalisierte Zahl]], eine [[IEEE 754#Denormalisierte Zahl|denormalisierte Zahl]] oder [[Null]] zurückgeben würde).&lt;br /&gt;
&lt;br /&gt;
IEEE-754-NaNs werden dargestellt, indem das Exponenten-Feld mit Einsen gefüllt wird (wie bei der Darstellung von Unendlichkeit) und irgendeine Zahl ungleich Null in den Signifikant geschrieben wird (im Unterschied zu Unendlich).&amp;lt;ref name=&amp;quot;ieee754&amp;quot;&amp;gt;{{Internetquelle |url=https://pcv.oss-cn-shanghai.aliyuncs.com/wp-content/upload/2022/12/ieee-std-754-2019.pdf |titel=IEEE Standard |abruf=2024-10-02}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;goldberg&amp;quot;&amp;gt;{{Internetquelle |url=https://www.validlab.com/goldberg/paper.pdf |titel=What Every Computer Scientist Should Know... |abruf=2024-10-03}}&amp;lt;/ref&amp;gt; Diese Darstellung erlaubt es, viele verschiedene NaN-Werte zu definieren, die sich durch die Bits des Signifikanten unterscheiden lassen. Der Standard ignoriert das [[Vorzeichenbit]].&amp;lt;ref name=&amp;quot;ieee754&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein bitweises Beispiel: Eine IEEE-754-Gleitkommazahl mit einfacher Genauigkeit (32 Bit), die NaN darstellt, wäre s111&amp;amp;nbsp;1111&amp;amp;nbsp;1axx&amp;amp;nbsp;xxxx&amp;amp;nbsp;xxxx&amp;amp;nbsp;xxxx&amp;amp;nbsp;xxxx&amp;amp;nbsp;xxxx, wobei &amp;#039;&amp;#039;s&amp;#039;&amp;#039; dem bei NaNs meistens ignorierten Vorzeichen entspricht, &amp;#039;&amp;#039;a&amp;#039;&amp;#039; den NaN-Typ bestimmt (still oder anzeigend) und &amp;#039;&amp;#039;x&amp;#039;&amp;#039; für die [[Nutzdaten]] steht (die auch meistens ignoriert werden). Ist &amp;#039;&amp;#039;a = 1&amp;#039;&amp;#039;, so handelt es sich um eine stille NaN; sind dagegen &amp;#039;&amp;#039;a = 0&amp;#039;&amp;#039; und die Nutzdaten ungleich Null, so ist es eine anzeigende NaN.&amp;lt;ref name=&amp;quot;goldberg&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Entstehung von NaNs ==&lt;br /&gt;
NaNs entstehen auf verschiedene Arten:&lt;br /&gt;
* Operationen, deren Operanden mindestens einmal ein NaN enthalten&lt;br /&gt;
* Nichtdeterminierte Formen&lt;br /&gt;
** Die Division 0&amp;amp;nbsp;/&amp;amp;nbsp;0 und ±∞&amp;amp;nbsp;/&amp;amp;nbsp;±∞&lt;br /&gt;
** Die Multiplikation 0&amp;amp;nbsp;×&amp;amp;nbsp;±∞ und ±∞&amp;amp;nbsp;×&amp;amp;nbsp;0&lt;br /&gt;
** Die Additionen ∞&amp;amp;nbsp;+&amp;amp;nbsp;−∞, −∞&amp;amp;nbsp;+&amp;amp;nbsp;∞ und die dazu äquivalenten Subtraktionen.&lt;br /&gt;
** Der Standard verfügt über unterschiedliche Funktionen zur [[Potenz (Mathematik)|Potenz-Rechnung]]:&lt;br /&gt;
*** Die Standard-Funktion pow und die Ganzzahl-Exponent-Funktion pown definieren 0&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;, 1&amp;lt;sup&amp;gt;∞&amp;lt;/sup&amp;gt; und ∞&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt; als 1&lt;br /&gt;
&amp;lt;!-- keine Quellen gefunden, Google findet auch nix. Was ist das für eine Funktion, wo gibt es die? … *** Die Funktion powr definiert alle drei nichtdeterminierten Formen als ungültige Operationen und gibt NaN zurück. --&amp;gt;&lt;br /&gt;
* Reelle Operationen mit komplexem Ergebnis, zum Beispiel&lt;br /&gt;
** Die Quadratwurzel einer negativen Zahl&lt;br /&gt;
** Den [[Logarithmus]] einer negativen Zahl&lt;br /&gt;
** Der inverse Sinus oder Kosinus einer Zahl, die kleiner −1 oder größer +1 ist.&lt;br /&gt;
** Der inverse hyperbolische Tangens einer Zahl, die kleiner gleich −1 oder größer gleich +1 ist.&lt;br /&gt;
** Der inverse hyperbolische Kosinus einer Zahl, die kleiner als +1 ist.&lt;br /&gt;
&lt;br /&gt;
NaNs können auch explizit Variablen zugewiesen werden, z.&amp;amp;nbsp;B. typischerweise als Repräsentation eines fehlenden Wertes. Bevor es den IEEE-Standard gab, nutzten Programmierer häufig bestimmte Werte (wie −99999999), um undefinierte oder fehlende Werte darzustellen; es kam jedoch regelmäßig zu Problemen, da diese Werte nicht einheitlich gewählt wurden, sodass keine Garantie bestand, dass die Spezialwerte von allen Programmierern konsistent und korrekt verwendet wurden.&lt;br /&gt;
&lt;br /&gt;
== Erkennung und Abfangen von NaNs ==&lt;br /&gt;
Nach einer Empfehlung des IEEE-Standards sollte es eine Funktion &amp;lt;code&amp;gt;isnan()&amp;lt;/code&amp;gt; geben, mit der ein NaN erkannt werden kann. Da NaNs die einzigen Zahlen &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; sind,&lt;br /&gt;
bei denen der Vergleich &amp;lt;math&amp;gt;x \ne x&amp;lt;/math&amp;gt; wahr ist, kann man auch diesen Vergleich zur Erkennung von NaNs verwenden.&amp;lt;ref name=&amp;quot;ieee754&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;goldberg&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In [[C (Programmiersprache)|C]] ist die Funktion &amp;lt;code&amp;gt;isnan()&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;math.h&amp;lt;/code&amp;gt;, in Delphi (Lazarus) in der Unit &amp;lt;code&amp;gt;Math&amp;lt;/code&amp;gt;, deklariert, so dass für eine Gleitkommavariable &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; die beiden folgenden Abfragen äquivalent sind:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  if (isnan(value)) {&lt;br /&gt;
    // value ist NaN, Fehlerbehandlung ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (value != value) {&lt;br /&gt;
    // value ist NaN, Fehlerbehandlung ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Numerische Mathematik]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cosmosis77</name></author>
	</entry>
</feed>