在C#中将浮点数组转换为字符串的最快方法是什么?
如果我的数组包含此{ 0.1, 1.1, 1.0, 0.2 }
然后我希望每个条目都转换为一个字符串,其值以空格分隔,即"0.1 1.1 1.0 0.2"
答案 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());
快速工作。