2010-01-07 125 views
4

看起來像這樣應該是直截了當的,但我一直沒有把它弄清楚。我已看過http://idunno.org/archive/2004/14/01/122.aspx以供參考。C#字符串格式化和填充

例如: 我想打印一個double值表,每個double輸出有3個小數精度,並佔用10個空格(左對齊)。從概念上講,我想這樣的事情,但它僅與精度或填充,而不是兩個作品:

foreach(line in lines) 
{ 
    foreach (double val in line) 
    { 
     Console.Write("{0:0.000,-10}", val); 
    } 

    Console.WriteLine() 
} 

更新:我可以用padleft/padright在非常簡單的情況下,如果我有更復雜的輸出就變得不是很簡潔。有沒有類似sprintf?

+1

string.Format是C#的sprintf – CannibalSmith 2010-01-07 09:29:07

回答

8

嘗試

double d = 3.14; 
Console.WriteLine("{0,10:0.000}", d); 

P.S:看看this article作爲字符串格式化的底漆。另外,string.Format應該允許你做sprintf所做的一切 - 實際上更多...你還想做什麼?

+0

:)非常好!謝謝 啊我的錯是因爲沒有仔細閱讀說明書 – homie347 2010-01-07 09:32:25

-1

有用

|{0,-10:0.00}| => |87,87 | - With "-" => padRight

|{0,10:0.000}| => | 87,878| - Without "-" => padLeft

|{3,-10:0.###}| - ### - 小數點後打印數 「」 只有當它是有意義的(不是0):87,8000 => 87 ,8