Увеличение значения числа с плавающей точкой - PullRequest
2 голосов
/ 28 февраля 2011

Я ищу с помощью грубой силы число с плавающей запятой с определенными свойствами (небольшая ошибка округления sin (a) ^ 2 + cos (a) ^ 2-1).Поэтому я хочу зациклить окрестность заданного числа с плавающей запятой, увеличивая значение значений.

Есть ли простой способ сделать это в C?

Ответы [ 2 ]

8 голосов
/ 28 февраля 2011

C99 имеет следующий и следующий;их не было в C90.

5 голосов
/ 28 февраля 2011

Если вы оказались на обратной платформе, которой не хватает nextafter( ), вы всегда можете использовать объединение (при условии, что компиляторы делают серьезные предположения о псевдонимах):

union { double d; int64_t i; } number;
number.d = initialValue;
doSomethingWithTheDouble(number.d);
number.i++; // increment to next double value away from zero

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...