La máquina épsilon se define canónicamente como el número más pequeño que, sumado a uno, da un resultado diferente de uno.¿Dónde encuentro la máquina épsilon en C#?
Hay un Double.Epsilon
pero el nombre es muy engañoso: es el valor más pequeño (desnormalizado) Double
representable, y por lo tanto inútil para cualquier tipo de programación numérica.
Me gustaría obtener el verdadero épsilon para el tipo Double
, para no tener que codificar las tolerancias en mi programa. Cómo hago esto ?
Relevante: http://www.johndcook.com/blog/2010/06/08/c-math-gotchas/ – AakashM
@AakashM: Lo leí. El significado de épsilon es bastante claro a la vista de IEEE754, y es una pena que Microsoft haya hecho algo así de amateur. ¿Es confiable su implementación en coma flotante? –
@AlexandreC .: 'Double.MinValue' se define muy probablemente como corresponde a los otros campos 'MinValue' en .NET Framework como' Int32.MinValue', 'DateTime.MinValue' etc. Esto obviamente no es el igual que 'DBL_MIN' en C. Sin embargo, estoy de acuerdo en que la definición de' Double.Epsilon' es confusa. –