[试图处理数组浮点数据,并将其保留为新数组以备后用。得到了10个项目的float [],并希望对每个项目进行数学运算并将结果保存到新数组中。出现“无法将浮点数转换为浮点数”错误。感谢您的帮助,如果在dup上找不到即时通讯在Google上搜索对不起。
public static void Main(string[] args)
{
Console.WriteLine("Proyecto X0n-832, Codificación de la teoría musical.");
//Variables Generales
float[] eau = { 440, 20000 };
float fnd = eau[0];
float cyc = fnd * 2;
//Se cambia sfn por sbf
float[] sbf = { fnd, cyc, cyc * 2, cyc * 4, cyc * 8, cyc * 16, cyc * 32, cyc * 64, cyc * 128, cyc * 256 };
//Imprimir la información hasta ahora:
Console.WriteLine("Rango audible definido entre " + eau[0] + " y " + eau[1] + " Hz");
Console.WriteLine("Frecuencia fundamental: " + fnd);
Console.WriteLine("Lista de ciclos (octavas): ");
// Console.WriteLine(string.Join("\n", sbf));
foreach (float i in sbf)
{
float[] icant = Math.Sqrt(i);
Console.WriteLine(i*2);
}
}
//编辑:添加了Linq和注释中共享的代码,但仍然有错误:
public static void Main(string[] args)
{
Console.WriteLine("Proyecto X0n-832, Codificación de la teoría musical.");
//Variables Generales
float[] eau = { 440, 20000 };
float fnd = eau[0];
float cyc = fnd * 2;
//Se cambia sfn por sbf
float[] sbf = { fnd, cyc, cyc * 2, cyc * 4, cyc * 8, cyc * 16, cyc * 32, cyc * 64, cyc * 128, cyc * 256 };
//Imprimir la información hasta ahora:
Console.WriteLine("Rango audible definido entre " + eau[0] + " y " + eau[1] + " Hz");
Console.WriteLine("Frecuencia fundamental: " + fnd);
Console.WriteLine("Lista de ciclos (octavas): ");
// Console.WriteLine(string.Join("\n", sbf));
var icant = sbf.Select(i => Math.Sqrt(i)).ToArray() // icant is an arry here
sbf.ForEach(i => Console.WriteLine(i * 2));
}
问题出在foreach
块中。 Math.Sqrt(i)
的输出类型不是float[]
,而是float
。我认为您想要的是:
var icant = sbf.Select(i => Math.Sqrt(i)).ToArray(); // icant is an arry here
Array.ForEach(sbf, i => Console.WriteLine(i));
我只是使用linq
扩展方法来完成这项工作。如果您对此不满意:
var result = new float[sbf.Length];
for( var i = 0; i < sbf.Length; i++)
{
result[i] = Math.Sqrt(sbf[i]);
Console.WriteLine(i*2);
}