C#에서 Infinite Series를 사용하여 PI 계산
문제
무한 재귀를 사용하여 PI를 계산하기 위해 C#에 다음 프로그램을 작성하려고했지만 정수/이중/소수점 분할에 대해 계속 혼란스러워합니다.
나는 이것이 왜 작동하지 않는지 전혀 알지 못하므로 여전히 C#을 배우면서 강력하게 입력 한 물건에 대한 이해 부족에 대해 용서하십시오.
미리 감사드립니다!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static int Main(string[] args)
{
int numeratornext = 2;
int denominatornext = 5;
decimal findto = 100.0M;
decimal pi = 0.0M;
decimal halfpi = 1.0M;
int seriesnum = 1;
int seriesden = 3;
for (int i = 0; i < findto; i++)
{
halfpi += Decimal.Divide((decimal)seriesnum, (decimal)seriesden);
//System.Console.WriteLine(Decimal.Divide((decimal)seriesnum, (decimal)seriesden).ToString());
seriesnum *= numeratornext;
seriesden *= denominatornext;
numeratornext++;
denominatornext += 2;
}
pi = halfpi * 2;
System.Console.WriteLine(pi.ToString());
System.Console.ReadLine();
return 0;
}
}
}
해결책
당신이 사용하기 때문에 당신의 혼란이 발생합니다 int
그리고 decimal
, 둘 다 정수 또는 고정 금지 금융 계산에 더 적합합니다. 내 제안은 단순히 선언하는 것입니다 모두 숫자 변수의 double
여기에서는 두 번의 복식의 수학적 작동이 다른 두 배가 발생하기 때문에 반환 값의 유형에 대한 모호성을 제거합니다.
(이 외에도 알고리즘이 잘못되었습니다. 그러나 알고리즘의 잘못은 사용중인 유형과 별도의 문제입니다.)
제휴하지 않습니다 StackOverflow