8

Seems like this should be something straightforward, but I haven't been able to get it right. I've looked at http://idunno.org/archive/2004/14/01/122.aspx for reference.

Example: I would like to print a table of double values, with each double output having 3 decimal precision, and take up 10 spaces (left aligned). Conceptually, I tried something like this, but it only works with precision OR padding, not both:

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

    Console.WriteLine()
}

Update: I can use padleft/padright in very simple scenarios, if i have more complicated output it becomes not very concise. Is there something similar to sprintf?

1
  • 1
    string.Format is C#'s sprintf Commented Jan 7, 2010 at 9:29

2 Answers 2

10

Try

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

P.S: have a look at this article as a primer on string formatting. Also, string.Format should allow you doing everything sprintf does - and actually more... what else are you trying to do?

Sign up to request clarification or add additional context in comments.

1 Comment

:) very nice! thanks ah my fault for not reading the description more carefully
1

useful

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

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

|{3,-10:0.###}| - ### - prints numbers after decimal "," only if it is meaningful (not 0): 87,8000 =>87,8

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.