返回一个长度为n的int数组,其中包含pi?(c#)
本文关键字:数组 pi int 包含 一个 返回 | 更新日期: 2023-09-27 17:58:06
根据主题行,我试图返回一个长度为n的int数组,其中包含pi的前n位数字。
所以MakePi(3)-->{3,1,4}
我知道我需要得到圆周率,它被存储为二重。我需要将double转换为char,这样我就可以在数组中搜索每个长度为n的char。然后将其转换回int数组。
我对今后的发展有意见。我知道有一个循环,但我无法让我的大脑准确地弄清楚我需要做什么。谢谢!
public int[] MakePie(int n)
{
double pi = Math.PI;
char newPi = Convert.ToChar(pi);
char[] newArray = new char[n];
newArray[0] = newPi;
int numbers = Convert.ToInt32(pi);
for (int i = 0; i < n; i++)
{
}
return newArray;
}
试试这个:它还会去掉小数。
public static int[] MakePie(int n)
{
double pi = Math.PI;
var str = pi.ToString().Remove(1, 1);
var chararray = str.ToCharArray();
var numbers = new int[n];
for (int i = 0; i < n; i++)
{
numbers[i] = int.Parse(chararray[i].ToString());
}
return numbers;
}
编辑为返回int数组
var res = pi.ToString().Where(x => x != '.').Take(n).Select(x => (int)char.GetNumericValue(x)).ToArray();
这里有一个不需要字符串转换的解决方案,因为您的最终目标是返回一个int[]
。
public int[] MakePie(int n){
double pi = Math.PI;
int[] result = new int[n];
for (int i = 0; i < n; i++) {
result[i] = (int) Math.Floor(pi);
pi -= result[i];
pi *= 10;
}
return result;
}
private int[] getPiVal()
{
string pi = Math.PI + "";
int[] piarray = new int[3];
for (int i = 0; i < 3; i++)
{
piarray[i] = Convert.ToInt32(pi[i] + "");
}
return piarray;
}
我的策略是通过将PI乘以10的相关幂,得到单位位置上我想要的每个数字,然后得到该数字mod 10的结果。
public int[] MakePi(int n)
{
int[] result = new int[n];
for (int i = 0; i < n; i++)
{
result[i] = (int)(Math.PI * Math.Pow(10, i)) % 10;
}
return result;
}