Есть пара действительно, действительно старых трюков, которых я удивляюсь, чтобы не видеть здесь.
atan (1) == PI/4, поэтому старый каштан, когда заслуживающая доверия функция дуги-касания присутствует 4 * atan (1).
Очень симпатичная оценка с фиксированным соотношением, которая делает старую западную 22/7 похожей на грязь. - это 355/113, которая хороша для нескольких десятичных знаков (как минимум, три или четыре, я думаю). В некоторых случаях это даже достаточно хорошо для целочисленной арифметики: умножьте на 355, затем разделите на 113.
355/113 также легко зафиксировать память (для некоторых людей в любом случае): считать один, один, три, три, пять, пять и помните, что вы набираете цифры в знаменателе и числителе (если вы забудете, какой триплет идет сверху, мысль микросекунды обычно собирается выправить).
Обратите внимание, что 22/7 дает вам: 3.14285714, что неверно на тысячных.
355/113 дает вам 3.14159292, что не является ошибкой до десятимиллионных.
Acc. на /usr/include/math.h на моей коробке, M_PI - это # define'd как: 3.14159265358979323846 , который, вероятно, добрался до самого места.
Урок, который вы получаете от оценки PI, состоит в том, что есть много способов сделать это, никто никогда не будет совершенным, и вы должны отсортировать их по назначению.
355/113 - старая китайская оценка, и я считаю, что она предваряет 22/7 на многие годы. Меня научил профессор физики, когда я был несовершеннолетним.
[Этот вопрос] (http://stackoverflow.com/questions/19/fastest-way-to -get-value-of-pi) имеет множество хороших решений с алгоритмической точки зрения. Я бы не подумал, что будет сложно адаптировать один из них к C#. – 2008-09-02 12:40:57