开发者

What is the fastest way of converting an array of floats to string? [duplicate]

开发者 https://www.devze.com 2023-01-20 19:02 出处:网络
This question already has answers here: Convert a list<int> to a join开发者_运维问答ed string of ints?
This question already has answers here: Convert a list<int> to a join开发者_运维问答ed string of ints? (2 answers) Closed 6 years ago.

What is the fastest way of converting an array of floats into string in C#?

If my array contains this { 0.1, 1.1, 1.0, 0.2 }

Then I want each entry to converted to a string with value separated by a white space, i.e. "0.1 1.1 1.0 0.2"


I would go for the most readable string.Join which also should have sufficient performance in most cases. Unless there is a real issue, I would not run my own:

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

It might be that I misread your question, so in case you want an enumeration of string go with the other answers.


To be more explicit, call float.ToString() manually and then string.Join() to separate each result with a space:

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

btw,

in .NET 2.0/3.0/3.5 there only single String.Join(string, string[])

but in .NET 4.0 there is also String.Join<T>(string, IEnumerable<T>)

@0xA3 uses method from .NET 4.0. Mine too. So for earlier versions use array.Select(..).ToArray()


You can do it like this:

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


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

or use 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));


I like approach with using Enumerable.Aggregate method:

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());

Works fast.

0

精彩评论

暂无评论...
验证码 换一张
取 消