![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Количество знаков у числа пи
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/
;-)
Там знаков столько, на сколько хватит терпения :))