我正在编写一个计算pi数字的程序,我有一个问题.在三次迭代之后,正确数字的数量超过双精度数中的可用内存.
我听说过System.Numerics.BigInteger类型(在System.Numerics.dll中),但我需要使用浮点数.我不太了解算法使用整数.
如果存在支持小数点的BigInteger版本,那将会很棒.下面我已经把我的C#代码:
var a = 1.0;
var b = 1 / Math.Sqrt(2);
var t = 0.25;
var p = 1.0;
double anext, bnext, tnext, pnext;
int count = 0;
for (int i = 1; i <= accuracy; i++ )
{
anext = (a + b) / 2;
bnext = Math.Sqrt(a * b);
tnext = (t - p * ((a - anext) * (a - anext)));
pnext = 2 * p;
a = anext;
b = bnext;
t = tnext;
p = pnext;
var pi = ((a + b) * (a + b)) / (4 * t);
Console.WriteLine("Iteration = " + i.ToString());
Console.WriteLine("Pi = " + pi + "\n\n\n\n");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |