将浮点数组转换为字符串的最快方法是什么?

时间:2010-10-20 10:09:01

标签: c# .net type-conversion

在C#中将浮点数组转换为字符串的最快方法是什么?

如果我的数组包含此{ 0.1, 1.1, 1.0, 0.2 }

然后我希望每个条目都转换为一个字符串,其值以空格分隔,即"0.1 1.1 1.0 0.2"

5 个答案:

答案 0 :(得分:18)

我会选择性能最高的string.Join,在大多数情况下也应具备足够的性能。除非有真正的问题,否则我不会自己运行:

float[] values = { 1.0f, 2.0f, 3.0f };
string s = string.Join(" ", values);

可能是我误解了你的问题,所以如果你想要string的枚举,请选择其他答案。

答案 1 :(得分:7)

要更明确,请手动调用float.ToString(),然后string.Join()以空格分隔每个结果:

var array = new float[] { 0.1, 1.1, 1.0, 0.2 };
string result = String.Join(" ", array.Select(f => f.ToString(CultureInfo.CurrentCulture));

顺便说一句,

在.NET 2.0 / 3.0 / 3.5中只有一个String.Join(string, string[])

但在.NET 4.0中还有String.Join<T>(string, IEnumerable<T>)

@ 0xA3使用.NET 4.0中的方法。我也是。因此,对于早期版本,请使用array.Select(..).ToArray()

答案 2 :(得分:3)

你可以这样做:

var floatsAsString = yourFloatArray.Select(f => f.ToString(CultureInfo.CurrentCulture));

答案 3 :(得分:3)

float[] arr = { 1.0f, 2.1f };
var str = arr.Select(x => x.ToString()).ToArray();

或使用rray.ConvertAll

public static string FloatFToString(float f)
{
    return f.ToString(); 
}

float[] a = { 1.0f, 2.1f };
var res = Array.ConvertAll(a, new Converter<float, string>(FloatFToString));

答案 4 :(得分:-2)

我喜欢使用Enumerable.Aggregate方法:

float[] array = new float[] { .1f, .2f, .3f, .4f, .5f };
string s = array.AsEnumerable().Aggregate<float, string, string>("", (a, e) => a += string.Format(" {0}", e), r => r.Trim());

快速工作。