Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Разное количество итераций с одным(почти) и тем же условием (http://forum.oszone.net/showthread.php?t=237747)

crashtuak 02-07-2012 20:49 1944574

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

                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 1944680

посмотрите как изменяются числа и станет ясно
Код:

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 1946417

Учим матчасть! :)
Разрядная сетка ограничена для дабла 8 байтами, в которые нужно как-то уместить целую и дробную (мантиссу) части числа. Как говорится, если где-то прибыло, то значит где-то убыло: если вы увеличиваете целую часть, для хранения дробной остается все меньше и меньше разрядов, таким образом, точность ухудшается. А чем хуже точность, тем меньше итераций нужно, чтобы b по величине стало меньше этой самой точности.


Время: 22:45.

Время: 22:45.
© OSzone.net 2001-