std: numeric_limits <double>:: определение эпсилона - PullRequest
8 голосов
/ 06 июня 2011

numeric_limits::espilon возвращает разницу между 1 и следующим двойным числом.Итак, я должен понимать, что расстояние между двумя смежными двойными числами не всегда одинаково, например, между 2 и следующим двойным числом?

Ответы [ 2 ]

16 голосов
/ 06 июня 2011

«Плотность» чисел с плавающей точкой уменьшается много по мере удаления от нуля.

Это потому, что IEEE с плавающей точкой хранится в основном как научная нотация, поэтому диапазон предпочтительнее, чем равномерная точность. (Если бы это была равномерная точность, это была бы фиксированная точка, а не с плавающей точкой.)

Другими словами, числа хранятся в форме Значим и * 2 Показатель , поэтому, если показатель становится большим, небольшое изменение в значении и производит большое изменение в числе (и наоборот).

Так что нет, вы не можете предполагать, что разница между 2 и следующим двойником такая же, как у эпсилона; это не так.

2 голосов
/ 06 июня 2011

Двойные числа являются числами с плавающей запятой.Они состоят из сигнума, значимого и показателя степени.

Чем выше показатель степени, тем больше разница между двойным числом и его преемником.двойник и его преемник.

...