If I've understood you're post, what you're saying is that you want to truncate at the 3rd decimal place rather than round. So you get the values +0.257, -0.257 and 0.000
The following should do that:
First define a function
// truncates to 3 decimal places
static double Truncate(double num)
{
return Math.Truncate(num * 1000) / 1000.0;
}
Now try
x = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num));
y = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num2));
z = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num3));
This should work for both positive and negative numbers.