-4

有什么优雅的方法可以在 C# 中输入浮点数 6.3 并输出浮点数数组 {0.3,1.3,2.3,3.3,4.3,5.3,6.3} 吗?

给定输入 a float ab ,如果 a = 5, b=3 ,那么我需要一个浮点数组 {0.3,1.3,2.3,3.3,4.3,5.3}

input:3.2  -> a float 
output:{0.2,1.2,2.2,3.2} -> a float array
4

7 回答 7

6

也许:

float f = 6.3f;
float[] ff = Enumerable.Range(0, (int)Math.Ceiling(f))
    .Select(i => (float)Math.Round(i + (f - (int)f), 1))
    .ToArray(); 

演示

0.3
1.3
2.3
3.3
4.3
5.3
6.3
于 2013-04-10T09:50:52.030 回答
2

我会尝试这样的事情:

double originalNumber = 6.3d;
double integralPart = Math.Truncate(originalNumber); // this is now 6.0
double fraction = originalNumber - integralPart; // this is now 0.3

List<double> results = new List<double>();
for (int i = 0; i <= integralPart; i++)
{
    double newNumber = i + fraction;
    results.Add(newNumber);
}

我已经尝试过了,它可以工作 - 它为给定的小数创建一个从 0.y 到 xy 的列表。

于 2013-04-10T09:49:47.617 回答
2

我的版本:

float[] getFloatStuff(float num) {
    float[] arr = new float[(int)num + 1];

    for (int i = arr.Length - 1; i >= 0; i--)
        arr[i] = num--;

    return arr;
}
于 2013-04-10T09:52:10.193 回答
1

好吧,这个问题的“完美答案”是:

float[] MyFunction(float arg)
{
    if (arg == 6.3)
    {
        return new float[]{0.3,1.3,2.3,3.3,4.3,5.3,6.3};
    }
    if (arg == 5.3)
    {
        return new float[]{0.3,1.3,2.3,3.3,4.3,5.3};
    }
    throw new ArgumentException("Not defined what to do in such situation");
}

请记住,答案总是与问题的质量相同 =)。

于 2013-04-10T10:00:34.500 回答
0

我真的不知道,但是像这样的东西?

private static List<float> Test(float input)
    {
        var list = new List<float>();
        while (input> 0)
        {
            list.Add(input);
            input--;
        }
        return list;
    }
于 2013-04-10T09:51:15.517 回答
0

你在这:

var arr = GetElegantRange(f).OrderBy(_ => _).ToArray();

public static IEnumerable<float> GetElegantRange(float input)
{
    while (input > 0)
        yield return input--;
}
于 2013-04-10T09:51:38.377 回答
0

您可以使用 LinQ 来执行此操作:

static float[] Function(float value)
{
  var max = (int)value;
  var remainder = value - max;

  return Enumerable.Range(0, max).Select(n => n + remainder).ToArray();
}

不要忘记添加

使用 System.Linq;

于 2013-04-10T09:52:25.810 回答