Я пытаюсь закодировать итеративную функцию, которая принимает начальную
double t = /*formula 1*/;
и затем вычисляет
for (auto i = 0; i < bigNumber; ++i)
{
temp = /*formula 2*/;
t = t*temp;
}
. Это прекрасно работает, за исключением случаев, когда начальная t
настолько мал, что C ++ автоматически устанавливает его равным нулю (на самом деле он НЕ должен быть нулем).
Тогда, конечно, t
всегда будет оставаться нулевым, так как мы умножаем его на себя, и в этом проблема.
Я попытался решить эту проблему, установив t
равным какому-то очень маленькому, но ненулевому числу, в случае, если C ++ установило его на ноль, но это не работает, потому что тогда я получаюпротивоположная проблема, когда t
в конечном счете взрывается, как только мы повторили это достаточно раз.
Как мне решить эту проблему?
Возможно, стоит упомянуть:
Первая формула (формула 1) включает в себя такие вещи, как exp(-verybignumber)
, а вторая формула включает такие вещи, как pow(i, -1)
, что означает, что она становится очень маленькой с более высокими итерациями.