Para responder directamente a su pregunta, desea utilizar el término epsilon
. Más exactamente, es machine epsilon
pero el uso común cae "máquina" y solo usa epsilon
.
Mirando en mi copia local de float.h
veo:
#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define LDBL_EPSILON DBL_EPSILON /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
Y los comentarios asociados dejan en claro que épsilon es el término al que se refiere.
Pero también podemos confiar en otras referencias externas para verificar que epsilon
es el término correcto. Vea aquí , aquí , aquí y finalmente esta combinación de etiquetas de consulta SO . No pude encontrar una referencia directa al estándar IEEE 754 para citar.
No preguntaste, pero encontré esta referencia que es muy relevante para el ejemplo que proporcionaste para aclarar tu pregunta.
Eche un vistazo a este artículo de blog de Bruce Dawson de Valve sobre la comparación de valores de coma flotante para obtener una idea de por qué no desea utilizar la comparación que sugirió.
Hay bastante información incluida en ese artículo, pero este es el fragmento más relevante a partir de ahí:
Si comparar flotantes para igualdad es una mala idea, entonces, ¿qué hay de verificar si su diferencia está dentro de algunos límites de error o valor de épsilon, como este:
bool isEqual = fabs(f1 – f2) <= epsilon;
Con este cálculo podemos expresar el concepto de dos flotadores que están lo suficientemente cerca que queremos considerarlos iguales. Pero, ¿qué valor debemos usar para epsilon?
Dada nuestra experimentación anterior, podríamos sentir la tentación de usar el error en nuestra suma, que fue aproximadamente 1.19e-7f. De hecho, incluso hay una definición en float.h con ese valor exacto, y se llama FLT_EPSILON.
Claramente eso es todo. ¡Los dioses del archivo de encabezado han hablado y FLT_EPSILON es el único épsilon verdadero!
Excepto que eso es basura. Para números entre 1.0 y 2.0, FLT_EPSILON representa la diferencia entre flotadores adyacentes. Para números menores que 1.0, un épsilon de FLT_EPSILON se vuelve demasiado grande rápidamente, y con números lo suficientemente pequeños, ¡FLT_EPSILON puede ser más grande que los números que está comparando!
Dawson repasa algunas otras consideraciones sobre las complejidades involucradas al comparar carrozas y tratar con valores muy pequeños como este, por lo que le recomendaría que lea el resto de su publicación.