Namespaces
Variants

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

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definiert im Header <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 stillen NaN-Wert, als ob durch Aufruf von std::strtof , std::strtod oder std::strtold , jeweils.

1) Der Aufruf std :: nanf ( " n-char-sequence ") , wobei n-char-sequence eine Folge von Ziffern, ASCII-Buchstaben und Unterstrichen ist, entspricht dem Aufruf std:: strtof ( "NAN( n-char-sequence ) " , ( char ** ) nullptr ) ; .
Der Aufruf std :: nanf ( "" ) ist äquivalent zum Aufruf std:: strtof ( "NAN()" , ( char ** ) nullptr ) ; .
Der Aufruf std :: nanf ( " string ") , wobei string weder eine n-char-sequence noch eine leere Zeichenkette ist, entspricht dem Aufruf std:: strtof ( "NAN" , ( char ** ) nullptr ) ; .
2) Gleich wie (1) , ruft jedoch std::strtod anstelle von std::strtof auf.
3) Gleich wie (1) , ruft aber std::strtold statt std::strtof auf.

Inhaltsverzeichnis

Parameter

arg - schmale Zeichenkette, die den Inhalt eines NaN identifiziert

Rückgabewert

Der stille NaN-Wert, der der identifizierenden Zeichenkette arg entspricht, oder null, falls die Implementierung stille NaNs nicht unterstützt.

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

Fehlerbehandlung

Diese Funktion unterliegt keinen der in math_errhandling spezifizierten Fehlerbedingungen.

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)

Siehe auch

(C++11)
prüft, ob die gegebene Zahl NaN ist
(Funktion)
(C++11)
ergibt ein stilles NaN vom Typ float
(Makrokonstante)
identifiziert Gleitkommatypen, die den speziellen Wert "stilles NaN" darstellen können
(öffentliche statische Memberkonstante von std::numeric_limits<T> )
identifiziert Gleitkommatypen, die den speziellen Wert "signalisierendes NaN" darstellen können
(öffentliche statische Memberkonstante von std::numeric_limits<T> )
[static]
gibt einen stillen NaN-Wert des gegebenen Gleitkommatyps zurück
(öffentliche statische Memberfunktion von std::numeric_limits<T> )
gibt einen signalisierenden NaN-Wert des gegebenen Gleitkommatyps zurück
(öffentliche statische Memberfunktion von std::numeric_limits<T> )
C-Dokumentation für nanf , nan , nanl