Машина epsilon канонически определяется как наименьшее число, которое добавляется к одному, дает результат, отличный от одного.Где я могу найти epsilon машины в C#?
Существует Double.Epsilon
, но это имя вводит в заблуждение: это наименьшее (денормализованное) значение, представляемое и, следовательно, бесполезное для любого числового программирования.
Я хотел бы получить true epsilon для типа Double
, так что не нужно иметь жесткие ограничения в моей программе. Как мне это сделать ?
Релевантно: http://www.johndcook.com/blog/2010/06/08/c-math-gotchas/ – AakashM
@AakashM: Я читал это. Смысл epsilon довольно ясен с точки зрения IEEE754, и стыдно, что Microsoft сделала что-то такое дилетантское. Реализуется ли их реализация с плавающей точкой? –
@AlexandreC .: 'Double.MinValue', скорее всего, определяется так, как он должен соответствовать другим полям« MinValue »в .NET Framework, например« Int32.MinValue »,' DateTime.MinValue' и т. Д. Это, очевидно, не то же, что и 'DBL_MIN' на C. Однако я согласен с тем, что определение' Double.Epsilon' запутывает. –