返回包含pi的前n位数的int数组长度n? (C#)

时间:2014-04-12 16:50:46

标签: c# arrays pi

根据主题行,我试图返回一个包含pi的前n个数字的int数组长度。

所以MakePi(3) - > {3,1,4}

我知道我需要获得pi并将其存储为double。我需要将double转换为char,以便我可以搜索数组以查找每个char,n的长度。然后将其转换回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;

    }

5 个答案:

答案 0 :(得分:1)

编辑返回int

数组
var res = pi.ToString().Where(x => x != '.').Take(n).Select(x => (int)char.GetNumericValue(x)).ToArray();

答案 1 :(得分:1)

试试这个:它也将摆脱小数。

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;

}

答案 2 :(得分:1)

这是一个不需要字符串转换的解决方案,因为您的最终目标是返回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;
 }

答案 3 :(得分:0)

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;
        }

答案 4 :(得分:0)

我的策略是通过将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; 
}