Re: Почему std::numeric_limits<int>::epsilon = 0?
От: Smal Россия  
Дата: 23.01.10 16:14
Оценка: 1 (1)
Здравствуйте, fin_81, Вы писали:

_>Здравствуйте.


_>Вопрос: почему у целых типов std::numeric_limits<int>::epsilon() = 0, а у чисел с плавающей точкой std::numeric_limits<float>::epsilon() = <FLOAT_EPS>?

_>Насколько я знаю по определению epsilon должен удовлетворять условию: минимальное положительное значение такое, что 1 + eps != 1. Отсюда для целых чисел eps = 1.

Может быть максимальное положительное значение такое, что 1 + eps == 1?

_>Буду очень благодарен, если подскажете как реализовать traits класс, который по значению std::numeric_limits<T>::is_integer определяет нужное значение для epsilon.
С уважением, Александр
Почему std::numeric_limits<int>::epsilon = 0?
От: fin_81  
Дата: 23.01.10 15:57
Оценка:
Здравствуйте.

Вопрос: почему у целых типов std::numeric_limits<int>::epsilon() = 0, а у чисел с плавающей точкой std::numeric_limits<float>::epsilon() = <FLOAT_EPS>?
Насколько я знаю по определению epsilon должен удовлетворять условию: минимальное положительное значение такое, что 1 + eps != 1. Отсюда для целых чисел eps = 1.

Буду очень благодарен, если подскажете как реализовать traits класс, который по значению std::numeric_limits<T>::is_integer определяет нужное значение для epsilon.
Re[2]: Почему std::numeric_limits<int>::epsilon = 0?
От: fin_81  
Дата: 23.01.10 16:43
Оценка:
Здравствуйте, Smal, Вы писали:


S>Может быть максимальное положительное значение такое, что 1 + eps == 1?


Скорее всего, я не прав.
Правильное определение epsilon: eps = x — 1, где x наименьшее число "равное" 1.
PS: иногда хочется изменить окружающий мир, чтобы оно соответствовало твоему ошибочному представлению о нем.
Re[3]: Почему std::numeric_limits<int>::epsilon = 0?
От: fin_81  
Дата: 23.01.10 17:58
Оценка:
Здравствуйте, fin_81, Вы писали:

_> PS: иногда хочется изменить окружающий мир, чтобы он соответствовал твоему ошибочному представлению о нем.


Тему можно закрыть.
У меня было ошибочное мнение, что eps — это минимальное значение, при прибавлении которого число становится неравным предыдущему значению. Путаница между epsilon и точностью.

PS этот вопрос возник в связи с попыткой реализации класса для работы с множеством отрезков
Автор: fin_81
Дата: 23.01.10
Re[4]: Почему std::numeric_limits<int>::epsilon = 0?
От: D14  
Дата: 26.01.10 09:32
Оценка:
Здравствуйте, fin_81, Вы писали:

_>У меня было ошибочное мнение, что eps — это минимальное значение, при прибавлении которого число становится неравным предыдущему значению. Путаница между epsilon и точностью.


Ну, в общем-то так и есть. По-видимому, epsilon имеет осмысленное значение только для нецелых типов. А чисто следуя логике определения epsilon для int д.б. =1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.