Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Количество знаков у числа пи


olookin ©   (2002-07-13 09:11:00) 

Уважаемые господа!

Вопрос в следующем: как получить например 100 первых разрядов у числа пи, и вывести их все в виде строки?

Заранее благодарен...


olookin   (2002-07-13 12:32:00) [1]

Вот теперь все понятно (благодаря Юрию Зотову). Вопрос снят. Спасибо.


Юрий Зотов   (2002-07-13 12:16:00) [2]

> Типы в Дельфи ограничены...

Как и в любом другом языке. Кстати, именно в Delphi набор стандартных типов богат и включает все необходимое. А учитывая возможность создания произвольных собственных типов, можно утверждать обратное - "типы в Дельфи НЕ ограничены".


> ...и точность там страдает

Снова - как и в любом другом языке. И не в языках дело. Видите ли, память компьютера имеет конечный размер, поэтому в нее нельзя записать даже одно число с бесконечным количеством знаков. "Нельзя объять необъятное". (C) Козьма Прутков.


> такое форматирование числа в строку, которое не обрезает
> знаки. Например, Format и FloatToStr обрезают.

При чем тут форматирование? САМО число УЖЕ хранится в обрезанном виде. Потому что под него всегда отводится определенное количество байт памяти. Сколько знаков там помещается - столько и можно преобразовать в строку, не более.


Короче говоря, чтобы 100 знаков числа Пи вывести в строку, их сначала надо получить. Причем стандартная функция Pi их, естественно, не даст, надо использовать один из множества известных алгоритмов вычисления. И ни в коем случае не пытаться хранить вычисляемое число в переменной любого стандартного арифметического типа, иначе оно ВСЕГДА будет обрезано. Либо создавайте для хранения результата свой собственный тип, либо храните его прямо в строке, дописывая в ее конец каждый новый знак сразу после его получения.


Anatoly Podgoretsky   (2002-07-13 11:47:00) [3]

Используй FloatToStrF получишь все 18 знаков для Extended


olookin   (2002-07-13 11:40:00) [4]

Спасибо, но я не то спрашивал. Типы в Дельфи ограничены и точность там страдает - это известно. Вопрос в том, как отобразить тесктом (переменной string) число с большим кол-вом знаков. Иными словами, если такое форматирование числа в строку, которое не обрезает знаки. Например, Format и FloatToStr обрезают.

Спасибо еще раз.


TTCustomDelphiMaster   (2002-07-13 10:45:00) [5]

Найди в интернете на математических сайтах. Думаю, где нибудь оно должно быть.
Ну а если хочешь сам посчитать, то к твоему сведению существуют числовые ряды, суммы которых равны константам. Например сумма ряда (-1)^(k-1) / (2k-1) равна PI/4,
Где k равно от 1 до бесконечности, а значек ^ - степень.
Только в паскале нет таких типов, с помощью которых можно посчитать число до 100 знаков после запятой. Тебе придется создать свой тип, который будет точно отображать числас несколькими сотнями знаков до и после запятой и написать для него процедуры сложения, вычитания, деления и умножения.
Потом придется долго ждать, пока k достигнет такой величины, что перестанет влиять на сто первый знак после запятой. Тогда ты получишь число с точностью до сотого знака.


doroshka   (2002-07-13 10:44:00) [6]

Если их надо просто получить - то вот:

http://3.141592653589793238462643383279502884197169399375105820974944592.jp/
;-)

Там знаков столько, на сколько хватит терпения :))


Наверх

Титульная страница Поиск, карта сайта Написать письмо