2010-11-25 4 views
4

Есть ли эквивалент C# для потоковых манипуляторов C++? НапримерСуществует ли менее рекурсивный способ форматирования чисел?

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

Он чувствует себя странно, имея форматировать число в строку, чтобы форматировать число в строку. Например

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

Это что просто, как это делается в C#, или я что-то пропустил?

+1

Вы можете написать третью строку как 'string format =" N "+ decimalPlaces;' (опустить вызов метода), поскольку она чище, и подразумевается '.ToString()'. – cdhowie

+0

@cdhowie Да, я получил это, но я оставил его, так как это помогло подчеркнуть мою мысль об рекурсивном ощущении процесса. – Spike

ответ

2

Я бы уменьшить его немного:

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

Кроме того, вы не имеют форматировать число перед печатью. В печатных средствах также будут использоваться конструкции форматирования.

+0

Но конструкция форматирования по-прежнему является строкой, не так ли? Поэтому я все еще вызываю decimalPlaces.ToString(), только где-то в другом месте. – Spike

+0

C# автоматически вызывает 'ToString()' при выполнении конкатенации строк. Я не знаю, какой простой способ избежать этого. –

+0

Так что, в принципе, нет. Я этого не ожидал. Благодарю. – Spike

Смежные вопросы