2010-11-25 35 views
4

Existe-t-il un équivalent C# des manipulateurs de flux C++? Par exemple, Y a-t-il une façon moins récursive de formater les nombres?

int decimalPlaces = 2; 
double pi = 3.14159; 
cout.precision(decimalPlaces); 
cout << pi; 

Il me fait bizarre d'avoir à formater un numéro à une chaîne afin de formater un numéro à une chaîne. Par exemple,

int decimalPlaces = 2; 
double pi = 3.14159; 
string format = "N" + decimalPlaces.ToString(); 
pi.ToString(format); 

Ce qui vient de la façon dont il est fait en C#, ou ai-je manqué quelque chose?

+1

Vous pouvez écrire la troisième ligne comme 'string format =" N "+ decimalPlaces;' (omettre l'appel de méthode) car il est plus propre, et '.ToString()' est implicite. – cdhowie

+0

@cdhowie Oui, je l'ai eu, mais je l'ai laissé car il a servi à souligner mon point de vue sur le sentiment récursif du processus. – Spike

Répondre

2

Je rétrécir légèrement:

int decimalPlaces = 2; 
double pi = 3.14159; 
pi.ToString("N" + decimalPlaces); 

De plus, vous ne ont pour formater le nombre avant de l'imprimer. Les installations d'impression accepteront également les constructions de formatage.

+0

Mais la construction de mise en forme sont toujours des chaînes, non? Donc j'appelle toujours decimalPlaces.ToString(), juste ailleurs. – Spike

+0

C# appelle automatiquement 'ToString()' lors de la concaténation de chaîne. Je ne connais aucun moyen facile d'éviter cela. –

+0

Donc, fondamentalement, non. Je ne m'attendais pas à ça. Merci. – Spike