Update
As the problem was not the "converting" from int/short to double, but the formatting of the resulting string, when printing i updated the Answer.
There is no need to explicitly Cast/Convert an Int/Short into Double. That is implicitly done.
Implicit Cast works like shown below:
int i = 3;
double d = i;
Working example of your code:
There is no need for an explicit cast.
class Program
{
static void Main(string[] args)
{
short a = 10;
int b = 20;
double d = a + b;
Console.WriteLine( d.ToString("0.00"));
Console.ReadKey();
}
}
Result:

Or you could use Convert.ToDouble()
Example usage:
int i = 3;
double x = Convert.ToDouble(i);
Have a look at this and this for further explanation.
Update 2
Thanks to Rand Random for the following hint.
You can also use d.ToString("N2")
, that way you get thousand separators.
For further Information about the difference of "0.00" and "N2" have a look at this post.