std::numeric_limits::epsilon
De cppreference.com
< cpp | types | numeric limits
![]() | Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate. La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí. |
static T epsilon() | (hasta C++11) | |
staticconstexpr T epsilon() | (desde C++11) | |
Devuelve el epsilon de la máquina, es decir, la diferencia entre 1.0 y el siguiente valor representable por la
T
tipo de punto flotante. Esto sólo tiene sentido si std::numeric_limits<T>::is_integer==false .Original:
Returns the machine epsilon, that is, the difference between 1.0 and the next value representable by the floating-point type
T
. It is only meaningful if std::numeric_limits<T>::is_integer==false.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.
Contenido |
[editar]Valor de retorno
T | std::numeric_limits<T>::epsilon() |
/* non-specialized */ | T(); |
bool | false |
char | 0 |
signedchar | 0 |
unsignedchar | 0 |
wchar_t | 0 |
char16_t | 0 |
char32_t | 0 |
short | 0 |
unsignedshort | 0 |
int | 0 |
unsignedint | 0 |
long | 0 |
unsignedlong | 0 |
longlong | 0 |
unsignedlonglong | 0 |
float | FLT_EPSILON |
double | DBL_EPSILON |
longdouble | LDBL_EPSILON |
[editar]Excepciones
[editar]Ejemplo
Muestra el uso simplista de epsilon de la máquina para comparar valores de punto flotante .
Original:
Demonstrates the simplistic use of machine epsilon to compare floating-point values.
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.
Ejecuta este código
#include <cmath>#include <limits>#include <iomanip>#include <iostream>#include <type_traits> template<class T>typenamestd::enable_if<!std::numeric_limits<T>::is_integer, bool>::type almost_equal(T x, T y, int ulp){// the machine epsilon has to be scaled to the magnitude of the larger value// and multiplied by the desired precision in ULPs (units in the last place)return std::abs(x-y)<=std::numeric_limits<T>::epsilon()*std::max(std::abs(x), std::abs(y))* ulp;}int main(){double d1 =0.2;double d2 =1/std::sqrt(5)/std::sqrt(5); if(d1 == d2)std::cout<<"d1 == d2\n";elsestd::cout<<"d1 != d2\n"; if(almost_equal(d1, d2, 2))std::cout<<"d1 almost equals d2\n";elsestd::cout<<"d1 does not almost equal d2\n";}
Salida:
d1 != d2 d1 almost equals d2
[editar]Ver también
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) | El siguiente valor representable de punto flotante hacia a un valor dado (función) |