有什么优雅的方法可以在 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
有什么优雅的方法可以在 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
也许:
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
我会尝试这样的事情:
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 的列表。
我的版本:
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;
}
好吧,这个问题的“完美答案”是:
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");
}
请记住,答案总是与问题的质量相同 =)。
我真的不知道,但是像这样的东西?
private static List<float> Test(float input)
{
var list = new List<float>();
while (input> 0)
{
list.Add(input);
input--;
}
return list;
}
你在这:
var arr = GetElegantRange(f).OrderBy(_ => _).ToArray();
public static IEnumerable<float> GetElegantRange(float input)
{
while (input > 0)
yield return input--;
}
您可以使用 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;