std::numeric_limits::signaling_NaN
Da cppreference.com
< cpp | types | numeric limits
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
static T signaling_NaN() |
(até C++11) | |
static constexpr T signaling_NaN() |
(desde C++11) | |
Retorna o valor especial "sinalização não-um-número", representado pelo
T
tipo de ponto flutuante. Só faz sentido se std::numeric_limits<T>::has_signaling_NaN == true. Em IEEE 754, a representação binária mais comum de números de ponto flutuante, qualquer valor de todos os bits de expoente do conjunto e pelo menos um bit do conjunto representa uma fracção NaN. É definida pela implementação que os valores da fração representam NaNs tranquilos ou de sinalização, e se o bit de sinal é significativa.Original:
Returns the special value "signaling não-um-número", as represented by the floating-point type
T
. Only meaningful if std::numeric_limits<T>::has_signaling_NaN == true. In IEEE 754, the most common binary representation of floating-point numbers, any value with all bits of the exponent set and at least one bit of the fraction set represents a NaN. It is implementation-defined which values of the fraction represent quiet or signaling NaNs, and whether the sign bit is meaningful.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Índice |
[editar] Valor de retorno
T
|
std::numeric_limits<T>::quiet_NaN() |
/* non-specialized */ | T();
|
bool | false |
char | 0 |
signed char | 0 |
unsigned char | 0 |
wchar_t | 0 |
char16_t | 0 |
char32_t | 0 |
short | 0 |
unsigned short | 0 |
int | 0 |
unsigned int | 0 |
long | 0 |
unsigned long | 0 |
long long | 0 |
unsigned long long | 0 |
float | definida pela implementação
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
double | definida pela implementação
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
long double | definida pela implementação
Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[editar] Exceções
[editar] Notas
A NaN nunca compara igual a si mesma. Copiando um NaN não pode preservar a sua representação pouco.
Original:
A NaN never compares equal to itself. Copying a NaN may not preserve its bit representation.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Quando um NaN sinalização é usado como um argumento para uma expressão aritmética, a excepção de ponto flutuante adequada, podem ser levantadas e a NaN é "acalmado", isto é, a expressão retorna um NaN silencioso.
Original:
When a signaling NaN is used as an argument to an arithmetic expression, the appropriate floating-point exception may be raised and the NaN is "quieted", that is, the expression returns a quiet NaN.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[editar] Exemplo
Demonstra o uso de um NaN sinalização para aumentar uma exceção de ponto flutuante
Original:
Demonstrates the use of a signaling NaN to raise a floating-point exception
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <limits> #include <cfenv> #pragma STDC_FENV_ACCESS on void show_fe_exceptions() { int n = std::fetestexcept(FE_ALL_EXCEPT); if(n & FE_INVALID) std::cout << "FE_INVALID is raised\n"; else if(n == 0) std::cout << "no exceptions are raised\n"; std::feclearexcept(FE_ALL_EXCEPT); } int main() { double snan = std::numeric_limits<double>::signaling_NaN(); std::cout << "After sNaN was obtained "; show_fe_exceptions(); double qnan = snan * 2.0; std::cout << "After sNaN was multiplied by 2 "; show_fe_exceptions(); double qnan2 = qnan * 2.0; std::cout << "After the quieted NaN was multiplied by 2 "; show_fe_exceptions(); std::cout << "The result is " << qnan2 << '\n'; }
Saída:
After sNaN was obtained no exceptions are raised After sNaN was multiplied by 2 FE_INVALID is raised After the quieted NaN was multiplied by 2 no exceptions are raised The result is nan
[editar] Veja também
[estática] |
identifica tipos de ponto flutuante que podem representar o valor especial "de sinalização não-número um" (NaN) Original: identifies floating-point types that can represent the special value "signaling not-a-number" (NaN) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (membro estático público constante) |
[estática] |
retorna um valor NaN tranquila do determinado tipo de ponto flutuante Original: returns a quiet NaN value of the given floating-point type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (função public static membro) |