using System;
using System.Collections.Generic;
namespace fraction
{
class Program
{
// 计算连分数
static Int32[] GetFraction(double f, int n)
{
var d = new List<Int32>();
if(f <= 0)
{
d.Add((int)Math.Floor(f));
return d.ToArray();
}
for(int i=0; i<n;++i)
{
// 整数部分
var dn = (int)Math.Floor(f);
if (i+1==n)
{
dn = (int)Math.Round(f);
}
d.Add(dn);
// 小数部分
f = f - dn;
if(f <= 0)
{
break;
}
// 剩余小数
f = 1 / f;
}
return d.ToArray();
}
static void Main(string[] args)
{
var a_p = GetFraction(Math.PI, 3);
var a_e = GetFraction(Math.E, 4);
Console.WriteLine("PI={0} ==> {1}", Math.PI, string.Join(',', a_p));
Console.WriteLine("E ={0} ==> {1}", Math.E, string.Join(',', a_e));
}
}
}
/*
PI=3.14159265358979 ==> 3,7,16
E =2.71828182845905 ==> 2,1,2,2
*/
C#计算连分数
于 2020-05-26 15:52:41 首次发布
本文探讨了如何使用C#编程语言来计算连分数,包括其在求解Math.PI和Math.E等数学常数中的应用。通过理解连分数的概念,我们将深入到C#的数学运算中,展示如何构造算法来逼近这些数值。

1711






