2010-11-25 4 views
4

Gibt es ein C# -Aquivalent von C++ - Streammanipulatoren? EgGibt es eine weniger rekursive Art, Zahlen zu formatieren?

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

Es fühlt sich komisch an eine Zahl in eine Zeichenfolge um eine Zahl in einen String zu formatieren zu formatieren zu müssen. Eg

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

es, dass, wie es in C# getan hat, oder habe ich etwas verpasst?

+1

Sie können die dritte Zeile als 'string format =" N "+ decimalPlaces;' schreiben (den Methodenaufruf weglassen), da es sauberer ist, und '.ToString()' ist impliziert. – cdhowie

+0

@cdhowie Ja, ich habe das verstanden, aber ich habe es gelassen, da es dazu diente, meinen Standpunkt über das rekursive Gefühl des Prozesses zu betonen. – Spike

Antwort

2

Ich würde es leicht schrumpfen:

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

Auch Sie nicht haben die Nummer zu formatieren, bevor es gedruckt wird. Die Druckereien akzeptieren auch Formatierungskonstrukte.

+0

Aber das Formatierungskonstrukt sind immer noch Strings, oder? Also rufe ich immer noch decimalPlaces.ToString(), nur woanders. – Spike

+0

C# ruft 'ToString()' automatisch auf, wenn eine String-Verkettung ausgeführt wird. Ich kenne keinen einfachen Weg, das zu vermeiden. –

+0

Also im Grunde, nein. Das habe ich nicht erwartet. Vielen Dank. – Spike

Verwandte Themen