powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Корректность цикла
21 сообщений из 21, страница 1 из 1
Корректность цикла
    #36726974
1nTrO88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем. Я столкнулся со следующим вроде несложным вопросом( при приеме на работу).
Имеется фрагмент кода:
REAL X=1.0, E=1.0, Y=2.0
DO {
E=E/2;
Y=E+X;
}WHILE Y<>1
Вопрос:Имеет ли смысл приведенный фрагмент?С точки зрения математики я понимаю, что Y всегда будет больше 1. Реализовал на С++-, с типом double цикл все-таки останавливается через 53 шага, с float-24. Прошу объяснить эту ситуацию.Благодарю.
...
Рейтинг: 0 / 0
Корректность цикла
    #36726994
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1nTrO88,

как вы думаете, к чему стремится последовательность

1 + 1 / 2; 1 + 1 / 4; 1 + 1 / 8; ...; 1 + 1 / 2 ^ i?

Очевидно, что к 1.

Учитывая, что у компьютера точность ограничена, то 1 / 2 ^ i станет нулем достаточно быстро (при достаточно маленьком i).
...
Рейтинг: 0 / 0
Корректность цикла
    #36727007
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym1nTrO88,

как вы думаете, к чему стремится последовательность

1 + 1 / 2; 1 + 1 / 4; 1 + 1 / 8; ...; 1 + 1 / 2 ^ i?

Очевидно, что к 1.

Все-таки к 2.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727015
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok,

1 + 1 / 2 ^ 53 ~= 2 значит? Судя по вашему посту - да.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727018
1nTrO88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О, теперь понял . Спасибо большое. !
...
Рейтинг: 0 / 0
Корректность цикла
    #36727025
1nTrO88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А теперь что-то опять какая-то путаница. я так понимаю эта последовательность стремится к начальному значению (2)??
...
Рейтинг: 0 / 0
Корректность цикла
    #36727270
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

согласен, облажался :). Действительно стремится к 1. Я с бесконечной геом. прогрессией перепутал.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727504
Олег_Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
an0nymУчитывая, что у компьютера точность ограничена, то 1 / 2 ^ i станет нулем достаточно быстро (при достаточно маленьком i).

Не достаточно быстро. А вот 1+1/2^i достаточно быстро превратиться в 1.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727576
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олег_Бan0nymУчитывая, что у компьютера точность ограничена, то 1 / 2 ^ i станет нулем достаточно быстро (при достаточно маленьком i).

Не достаточно быстро. А вот 1+1/2^i достаточно быстро превратиться в 1.
On a typical computer system, a 'double precision' (64-bit) binary floating-point number has a coefficient of 53 bits (one of which is implied), an exponent of 11 bits, and one sign bit.
При i = 54 уже превратится в 0.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727670
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym
On a typical computer system, a 'double precision' (64-bit) binary floating-point number has a coefficient of 53 bits (one of which is implied), an exponent of 11 bits , and one sign bit.
При i = 54 уже превратится в 0.
Скорее, при i = 1024.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727931
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok,

не.

1 / 2 ^ 1 = 0.5 * 10 ^ 1
1 / 2 ^ 2 = 0.25 * 10 ^ 1
1 / 2 ^ 3 = 0.125 * 10 ^ 1
...
1 / 2 ^ 53 = 0.0000000000000001 * 10 ^ 1
1 / 2 ^ 54 = 0.0000000000000000 * 10 ^ 1 = 0. Не поместилось.
...
Рейтинг: 0 / 0
Корректность цикла
    #36727976
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

ну вы, блин, даете...
1 / 2 ^ 54 = 1.000000000000000 * 2 -54 - все прекрасно поместилось
...
Рейтинг: 0 / 0
Корректность цикла
    #36727989
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok,

http://en.wikipedia.org/wiki/Decimal64_floating-point_format


Я, конечно, не буду утверждать, что вы не правы. Но эксперимент ТСа, описанный в конце первого поста, подтверждает мою правоту.
...
Рейтинг: 0 / 0
Корректность цикла
    #36728117
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

http://en.wikipedia.org/wiki/Double_precision_floating-point_format

Первый пост как раз потвеждает, что 1 + 1 / 2 54 -> 1. Это и понятно,
поскольку происходит переполнение мантиссы. Но вот насчет 1 / 2 54 -> 0 уже не так очевидно.
...
Рейтинг: 0 / 0
Корректность цикла
    #36728241
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, теперь понял. Согласен, вы правы.
...
Рейтинг: 0 / 0
Корректность цикла
    #36728249
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MozokНо вот насчет 1 / 2 54 -> 0 уже не так очевидно.А у float-24 какой размер показателя степени?
...
Рейтинг: 0 / 0
Корректность цикла
    #36728373
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Single precision .
24 бита мантиссы, 8 бит показателя.
...
Рейтинг: 0 / 0
Корректность цикла
    #36728386
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozokmiksoft,

Single precision .
24 бита мантиссы, 8 бит показателя.Про Single precision я в курсе. А вот float-24 первый раз вижу. И, думаю, это не одно и то же.
...
Рейтинг: 0 / 0
Корректность цикла
    #36728442
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

вы про этот float говорите?
...
Рейтинг: 0 / 0
Корректность цикла
    #36728687
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozokmiksoft,

вы про этот float говорите?Нет, сорри. Это я криво фразу топикстартера прочитал "цикл все-таки останавливается через 53 шага, с float-24". Из чего заключил, что он использует некий тип float-24.
А надо было читать как "с типом double цикл все-таки останавливается через 53 шага" и "с типом float цикл все-таки останавливается через 24 шага".
...
Рейтинг: 0 / 0
Корректность цикла
    #36728765
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1nTrO88 wrote:
> Автор: "1nTrO88"
> Добрый день всем. Я столкнулся со следующим вроде несложным вопросом(
> при приеме на работу).
> Имеется фрагмент кода:
> REAL X=1.0, E=1.0, Y=2.0
> DO {
> E=E/2;
> Y=E+X;
> }WHILE Y<>1
> Вопрос:Имеет ли смысл приведенный фрагмент?

Нет.

Должно быть

> }WHILE Y > 1.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Корректность цикла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]