Namensräume
Varianten
Aktionen

std::nan, std::nanf, std::nanl

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Definiert in der Header-Datei <cmath>
float       nanf( const char* arg );
(1) (seit C++11)
double      nan ( const char* arg );
(2) (seit C++11)
long double nanl( const char* arg );
(3) (seit C++11)

Konvertiert die Zeichenkette arg in den entsprechenden Quiet-NaN-Wert, als ob std::strtof, std::strtod oder std::strtold aufgerufen worden wäre.

1) Der Aufruf std::nanf("n-char-sequence"), wobei n-char-sequence eine Sequenz von Ziffern, ASCII-Buchstaben und Unterstrichen ist, ist äquivalent zum Aufruf von std::strtof("NAN(n-char-sequence)", (char**)nullptr);.
Der Aufruf std::nanf("") ist äquivalent zum Aufruf von std::strtof("NAN()", (char**) nullptr);.
Der Aufruf std::nanf("string"), wobei string weder eine n-char-sequence noch ein leerer String ist, ist äquivalent zum Aufruf von std::strtof("NAN", (char**) nullptr);.
2) Gleiches Verhalten wie in (1), aber es wird std::strtod anstelle von std::strtof aufgerufen.
3) Gleiches Verhalten wie in (1), aber es wird std::strtold anstelle von std::strtof aufgerufen.

Inhalt

[bearbeiten] Parameter

arg - Schmalbandiger Zeichenkettenliteral, der den Inhalt eines NaN identifiziert

[bearbeiten] Rückgabewert

Der Quiet-NaN-Wert, der der identifizierenden Zeichenkette arg entspricht, oder null, wenn die Implementierung keine Quiet NaNs unterstützt.

Wenn die Implementierung IEEE Gleitkommaarithmetik (IEC 60559) unterstützt, unterstützt sie auch Quiet NaNs.

[bearbeiten] Fehlerbehandlung

Diese Funktion unterliegt keinen der Fehlerbedingungen, die in math_errhandling angegeben sind.

[bearbeiten] Beispiel

#include <cmath>
#include <cstdint>
#include <cstring>
#include <iostream>
 
int main()
{
    double f1 = std::nan("1");
    std::uint64_t f1n; std::memcpy(&f1n, &f1, sizeof f1);
    std::cout << "nan(\"1\") = " << f1 << " (" << std::hex << f1n << ")\n";
 
    double f2 = std::nan("2");
    std::uint64_t f2n; std::memcpy(&f2n, &f2, sizeof f2);
    std::cout << "nan(\"2\") = " << f2 << " (" << std::hex << f2n << ")\n";
}

Mögliche Ausgabe

nan("1") = nan (7ff0000000000001)
nan("2") = nan (7ff0000000000002)

[bearbeiten] Siehe auch

(C++11)
prüft, ob die gegebene Zahl NaN ist
(Funktion) [bearbeiten]
(C++11)
evaluiert zu einem leisen NaN vom Typ float
(Makrokonstante) [bearbeiten]
identifiziert Gleitkommatypen, die den speziellen Wert "quiet not-a-number" (NaN) darstellen können
(öffentliche statische Member-Konstante von std::numeric_limits<T>) [bearbeiten]
identifiziert Gleitkommatypen, die den speziellen Wert "signaling not-a-number" (NaN) darstellen können
(öffentliche statische Member-Konstante von std::numeric_limits<T>) [bearbeiten]
[static]
gibt einen stillen NaN-Wert des gegebenen Gleitkommatyps zurück
(öffentliche statische Member-Funktion von std::numeric_limits<T>) [bearbeiten]
gibt einen Signal-NaN-Wert des gegebenen Gleitkommatyps zurück
(öffentliche statische Member-Funktion von std::numeric_limits<T>) [bearbeiten]
C-Dokumentation für nanf, nan, nanl