8
votes

Quel est le moyen le plus rapide de convertir une gamme de flotteurs en chaîne?

Quel est le moyen le plus rapide de convertir une gamme de flotteurs en chaîne en C #?

Si mon tableau contient ce tableau {0.1, 1.1, 1.0, 0,2}

Ensuite, je veux que chaque entrée convertie en une chaîne avec une valeur séparée par un espace blanc, c'est-à-dire "0,1 1.1 1,0 0,2"


3 commentaires

Pouvez-vous décrire le résultat que vous attendez?


Que signifie "le plus rapide"? Performance d'exécution (quelle cible?), Moins de lignes de code, le code le plus lisible, etc ...


Juste besoin de quelque chose qui me fait éviter les boucles


5 Réponses :


3
votes

Vous pouvez le faire comme ceci:

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


0 commentaires

3
votes
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));

0 commentaires

19
votes

J'irais pour le fichier la plus lisible.join code> qui devrait également avoir une performance suffisante dans la plupart des cas. Sauf s'il y a un vrai problème, je ne dirais pas la mienne:

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


6 commentaires

Probablement, il va juste appeler float.tostring () pour chaque élément du tableau


Ne compile pas. Dit "Rejoindre" a des arguments invalides.


@ABATISHCHEV: Oui, ce sera, puis il utilise un constructeur de cordes pour concaténer les éléments. Si vous avez besoin de formatage spécifique, votre réponse offre toutes les possibilités.


@Wajih: Désolé, j'ai oublié de le vérifier, mais ma solution ne fonctionne que avec .NET 4.0.


Cette réponse est lisible. La réponse "cochée" n'est pas.


@Wajih: Si vous en avez besoin pour travailler dans des versions plus anciennes de .NET, alors do string s = string.join ("", valeurs.select (f => f.tostring ()). TOARRAY ()) < / code>



7
votes

Pour être plus explicite, appelez float.tostring () code> manuellement, puis string.join () code> Pour séparer chaque résultat avec un espace:

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


1 commentaires

Cela semble être la réponse la plus complète.