Войти

Показать полную графическую версию : Разное количество итераций с одным(почти) и тем же условием


crashtuak
02-07-2012, 20:49
Есть код:

int i = 0;
double c = 0;
double b = 10.0;
double sum = 0;
do{
b = b/2.0;
sum=c+b;
i++;

}while(sum > c);

Почему с увеличение c уменьшается количество итераций? Я знаю, что это связано с пердставлением чисел в памяти, но как? :)

ferget
03-07-2012, 02:14
посмотрите как изменяются числа и станет ясно
do{
b = b/2.0;
sum=c+b;

cout<<b<<endl;
cout<<c<<endl;
cout<<sum<<endl;
cout<<endl;

i++;

}while(sum > c);

kazak_vasilij
05-07-2012, 14:39
Учим матчасть! :) (http://www.strekoza-tv.ru)
Разрядная сетка ограничена для дабла 8 байтами, в которые нужно как-то уместить целую и дробную (мантиссу) части числа. Как говорится, если где-то прибыло, то значит где-то убыло: если вы увеличиваете целую часть, для хранения дробной остается все меньше и меньше разрядов, таким образом, точность ухудшается. А чем хуже точность, тем меньше итераций нужно, чтобы b по величине стало меньше этой самой точности.




© OSzone.net 2001-2012